摘要: 基本原理:每次查找都对半分,但要求数组是有序的 阅读全文
posted @ 2017-06-02 15:58 yl007 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 1 public class Solution { 2 3 public static int SequenceSearch(int[] sz, int key) { 4 for (int i = 0; i < sz.length; i++) { 5 if (sz[i] == key) { 6 retu... 阅读全文
posted @ 2017-06-02 15:57 yl007 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 算法: 1、将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。 2、从最低位开始,依次进行一次排序。 3、这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 阅读全文
posted @ 2017-06-02 15:53 yl007 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 算法: 1、找出待排序的数组中最大和最小的元素 2、统计数组中每个值为i的元素出现的次数,存入数组C的第i项 3、对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加) 4、反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1 阅读全文
posted @ 2017-06-02 15:43 yl007 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 算法: 1、设置一个定量的数组当作空桶子。 2、寻访串行,并且把项目一个一个放到对应的桶子去。 3、对每个不是空的桶子进行排序。 4、从不是空的桶子里把项目再放回原来的串行中。 阅读全文
posted @ 2017-06-02 15:42 yl007 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 最大堆调整: 1、在对应的数组元素A[i], 左孩子A[LEFT(i)], 和右孩子A[RIGHT(i)]中找到最大的那一个,将其下标存储在largest中。 2、如果A[i]已经就是最大的元素,则程序直接结束。 3、否则,i的某个子结点为最大的元素,将A[largest]与A[i]交换。 4、再从 阅读全文
posted @ 2017-06-02 15:29 yl007 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 算法: 1、从数列中挑出一个元素,称为 "基准"(pivot), 2、重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。 3、递归地(recursive 阅读全文
posted @ 2017-06-02 15:23 yl007 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 算法: 1、依次比较相邻的两个数,将小数放在前面,大数放在后面; 2、第一趟可得到:将最大数放到最后一位。 3、第二趟可得到:将第二大的数放到倒数第二位。 4、如此下去,重复以上过程,直至最终完成排序。 阅读全文
posted @ 2017-06-02 15:16 yl007 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 算法: 1、先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。 2、所有距离为d1的倍数的记录放在同一个组中,在各组内进行直接插入排序。 3、取第二个增量d2<d1重复上述的分组和排序, 4、直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接 阅读全文
posted @ 2017-06-02 15:10 yl007 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 算法: 1、从第一个元素开始,该元素可以认为已经被排序 2、取出下一个元素,在已经排序的元素序列中二分查找到第一个比它大的数的位置 3、将新元素插入到该位置后 4、重复上述两步 阅读全文
posted @ 2017-06-02 13:49 yl007 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 算法:(升序:小→大,适合数据量较小) 1、从第一个元素开始,该元素可以认为已经被排序 2、取出下一个元素,在已经排序的元素序列中从后向前扫描 3、如果该元素(已排序)大于新元素,将该元素移到下一位置 4、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 5、将新元素插入到该位置后 6、重复 阅读全文
posted @ 2017-06-02 11:34 yl007 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 算法规则: 像快速排序一样,由于归并排序也是分治算法,因此可使用分治思想:1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2.设定两个指针,最初位置分别为两个已经排序序列的起始位置 3.比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 4.重复步 阅读全文
posted @ 2017-06-02 11:12 yl007 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 本质来说,快速排序的过程就是不断地将无序元素集递归分割,一直到所有的分区只包含一个元素为止。 由于快速排序是一种分治算法,我们可以用分治思想将快排分为三个步骤:1.分:设定一个分割值,并根据它将数据分为两部分2.治:分别在两部分用递归的方式,继续使用快速排序法 3.合:对分割的部分排序直到完成 阅读全文
posted @ 2017-06-02 11:11 yl007 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 阅读全文
posted @ 2017-06-02 10:39 yl007 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 元素两两比较,越小的元素浮到数列的顶端。 阅读全文
posted @ 2017-06-02 10:24 yl007 阅读(163) 评论(0) 推荐(0) 编辑