
排序算法
wu_lai_314
这个作者很懒,什么都没留下…
展开
-
冒泡排序 知识点小结
冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。不过,一路、二路归并排序、不平衡二叉树排序的速度均比冒泡排序快,且具有稳定性,但速度不及堆排序、快速排序。冒原创 2012-12-29 20:32:37 · 1906 阅读 · 0 评论 -
希尔排序 知识点小结
希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2 该方法实质上是一种分组插入方法。代原创 2012-12-27 23:16:02 · 875 阅读 · 0 评论 -
改进的两路归并排序算法
两路归并排序所需时间主要包括划分子序列的时间。以及两个子序列分别排序的时间和归并的时间。划分子序列的时间是一个常数,可以不考虑,最后的归并时间与元素的个数 n 线性相关, 因此,对于一个长度为n的元素序列进行归并排序的时间代价为:T(n)=cn+2T(n/2)。当元素的个数为1 时,函数直接返回,因此T(1)=1.与快速排序的时间复杂度相识,两路归并排序的时间复杂度也为O(nlogn)原创 2012-12-30 13:15:32 · 4241 阅读 · 0 评论 -
直接插入排序
直接插入排序(straight insertion sort)的作法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。直接插入排序(Straight Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它原创 2012-12-29 21:20:03 · 898 阅读 · 0 评论 -
折半插入排序
折半插入排序(binary insertion sort)又称二分法插入分序,是对直接插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。 折半插入排序的基本思想是:设在数据表中有一个元素序列a[0],a[1],……,a[n-1]。其中原创 2012-12-29 22:05:12 · 2721 阅读 · 2 评论 -
快速排序 知识点小结
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序(Quick Sort)是一种有效的排序算法。虽然算法在最坏的情况下运行时间为O(n^2)(当序列本身就处于有序状态时候就会出现这个情况)原创 2012-12-28 22:36:03 · 964 阅读 · 0 评论 -
直接选择排序 知识点小结
直接选择排序(Straight Select Sorting) 也是一种简单的排序方法,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R{1}~R[n-1]中选取最小值,与R[1]交换,...., 第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通原创 2012-12-30 18:21:15 · 1037 阅读 · 0 评论 -
基数排序之LSD篇 (知识点小结)
基数排序(radix sort)是属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O ( d(n+radix ) ),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的比较性排原创 2013-01-07 01:54:14 · 6541 阅读 · 1 评论 -
归并排序 知识点小结
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有原创 2012-12-29 16:40:58 · 1259 阅读 · 0 评论