排序算法
Function_18
这个作者很懒,什么都没留下…
展开
-
插入排序
插入法插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。每次取出一个数, 将它与前一个数比较, 再放在将其交换位置原创 2017-07-26 14:37:33 · 296 阅读 · 0 评论 -
堆排序
堆排序初始化堆:将数列a[1…n]构造成最大堆。交换数据:将a[1]和a[n]交换,使a[n]是a[1…n]中的最大值;然后将a[1…n-1]重新调整为最大堆。 接着,将a[1]和a[n-1]交换,使a[n-1]是a[1…n-1]中的最大值;然后将a[1…n-2]重新调整为最大值。 依次类推,直到整个数列都是有序的。对排序主要是将最小(或者最大)先找到, 排到a[0], 再将a[0] 与 最后一位元素交换原创 2017-07-26 14:45:00 · 281 阅读 · 0 评论 -
桶排序
桶排序桶排序主要是开辟一个很大的数组, 将其都赋值为0; 其作用为 : 如 : 输入数据 1 , 2 ,4 ,3 , 7, 1; 大数组 a[1] = 2, a[2] = 1, a[3] = 1, a[4] = 1, a[7] = 1;其余全部为0;a[i] = i出现的次数;然后浏览数组, 将不为0 的a[i] 的i 输出, 即实现排序;原创 2017-07-26 14:57:33 · 369 阅读 · 0 评论 -
归并排序
归并排序归并也是经典的分治策略, 它将问题分成一些小的问题后递归求解, 而治就是将分段的各个答案合并补在一起分解 – 将当前区间一分为二,即求分裂点 mid = (low + high)/2; 求解 – 递归地对两个子区间a[low…mid] 和 a[mid+1…high]进行归并排序。递归的终结条件是子区间长度为1。 合并 – 将已排序的两个子区间a[low…mid]和 a[mid+1…hi原创 2017-07-26 15:30:22 · 317 阅读 · 0 评论 -
快速排序
快速排序快速排序使用分治法策略。 它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。代码就表达了快排的核心思想, 找到比其小的数, 就换位置, 左右左右…的方向来插入数原创 2017-07-26 15:55:53 · 348 阅读 · 0 评论