
算法
华仔的逆袭
这个作者很懒,什么都没留下…
展开
-
【算法】不能被素数相加得到的偶数
问题:求[m,n]区间内所有不能被素数相加得到的偶数. 思路:先求能相加得到的,然后再根据得到的找出得不到的。import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;import java.util.TreeSet;public class PrimeNum原创 2017-02-19 09:27:54 · 1188 阅读 · 0 评论 -
经典的排序算法--快速排序
快排的核心思想:确定基准,然后按照基准进行分割。递归0.快速排序的框架快速排序(升序)的思想就是先确定一个基准,然后通过partition函数去让数组保持小于等于和大于分别置于数组两端。然后通过递归不断对数组进行划分,最终达到有序。 例如:ABCDEFGHIJK;如果此序列的基准为F,那么我们最终通过一次partition要达到的效果就是:ABCDE都小于等于F,GHIJK都大于F。ABCDE和原创 2017-03-27 18:26:26 · 1402 阅读 · 0 评论 -
经典的排序算法--归并排序
归并排序核心思想:递归过程,使得前1/2和后1/2分别有序,然后对两个有序序列进行合并。从递归的逆过程看,就是两两合并,最终达到有序。 递归逆过程举例: 【3】【1】【5】【8】【7】【4】【2】【6】 【1,3】【5,8】【7,4】【2,6】 【1,3,5,8】【2,4,6,7】 【1,2,3,4,5,6,7,8】对于归并排序来说,合并过程是算法中的核心步骤,我们不多说了,来看看代码。i原创 2017-03-28 21:03:55 · 464 阅读 · 0 评论 -
经典的排序算法--堆排序
核心点:堆调整如何形成最小堆/最大堆,那就先需要了解最小堆/最大堆的概念。最大堆(大根堆)要求根节点的关键字既大于或等于左子树的关键字值,又大于或等于右子树的关键字值,且要求是完全二叉树。原创 2017-03-25 10:05:50 · 406 阅读 · 0 评论 -
经典的排序算法--选择排序与冒泡排序
选择排序与冒泡排序1. 选择排序选择排序的核心思想就是:每遍历一次数组都选择出其中最大或者最小的数值,形成有序的数列。在排序过程中,数组中会存在一部分有序数列和一部分无序数列,所以在排序中,需要我们仅排无序数列部分即可,这样会一定程度上加快程序运行速度。平均的时间复杂度为O(n*n)。原创 2016-08-06 14:40:14 · 553 阅读 · 0 评论 -
【算法】平衡数
题目:平衡数的定义是:将一个数分成左右两部分,分别成为两个新的数。 左右部分必须满足以下两点: 1,左边和右边至少存在一位。 2,左边的数每一位相乘如果等于右边的数每一位相乘,则这个数称为平衡数。 例如:1221这个数,分成12和21的话,1*2=2*1,则称1221为平衡数,再例如:1236这个数,可以分成123和1*2*3=6,所以1236也是平衡数。而1234无论怎样分也不满足平衡数。原创 2017-03-25 10:34:03 · 4796 阅读 · 0 评论 -
【算法】字符串分类
题目:字符串分类,两个字符串A和B属于同一类需要满足以下条件: A中交换任意位置的两个字符,最终可以得到B,交换的次数不限。比如:abc与bca就是同一类字符串。 输入:首先输入一个正整数N(1 <= N <= 50),接下来输入N个字符串 输出:输出一个整数表示分类的个数。 例子: 3 abc bca cab 1 解题要点:需要抓住同类字符串的共同点(含有原创 2017-03-25 10:23:21 · 2102 阅读 · 0 评论 -
【算法】字符串模式匹配Sunday算法
之前对于字符串模式匹配的了解仅限于那几个API函数和暴力求解方法,没有真正地探讨过关于字符串匹配的问题,今天因为一些原因看到了这个问题引发了我的兴致,故研究了一下sunday算法。1.sunday思路sunday算法是从前往后匹配,在匹配失败时关注的是源字符串参与匹配最末尾字符的下一个字符:如果该字符没有在模式串中出现则直接跳过,匹配移动位数=模式串长度+1否则,匹配移动位数=模式串中最右端的该原创 2017-04-14 22:41:05 · 752 阅读 · 0 评论