各种排序方法的比较

1.从时间复杂度比较

从时间复杂度角度考虑,直接插入排序、冒泡排序、直接选择排序是三种简单的排序方法,时间复杂度均为O(n^2),而快速排序。堆排序、二路归并排序的时间复杂度都为O(nlog2n),希尔排序的时间复杂度介于这两者之间。若从最好情况的时间复杂度考虑,则直接插入排序和冒牌排序的时间复杂度最好为O(n),其他排序最好情况的时间复杂度同平均情况相同。若从最坏情况的时间复杂度考虑,则快速排序为O(n^2),直接插入排序、冒泡排序、希尔排序与平均情况的复杂度相同,但系数大约增加一倍,所以运行速度将降低一半,最坏情况对直接选择排序和归并排序影响不大。

2.  从空间复杂度比较
归并排序的空间复杂度最大,为O(n),快速排序的空间复杂度为O(log2n),其他排序的空间复杂度为O(1)。
3. 从稳定性比较
直接插入排序、冒泡排序、归并排序都是稳定的排序方法,而直接选择排序、希尔排序、快速排序、堆排序是不稳定的排序方法。
4. 从算法简单性比较
直接插入排序、冒泡排序、直接选择排序都是简单的排序方法,算法简单、易于理解,而希尔排序、快速排序、堆排序、归并排序都是改进型的排序方法,算法比简单排序要相对复杂一下。
5. 一般选择规则
(1).当待排序的记录数n不大时(n<50),可以选用直接插入排序、冒泡排序和简单选择排序中的任一种排序方法,他们的时间复杂度虽为O(n^2),但方法简单、容易实现。其中直接插入排序和冒泡排序在原记录按关键字“基本有序”时,排序速度比较快。而简单选择排序的记录交换次数较少,但是,若要求排序稳定时,不能采用简单选择排序。
(2)当待排序的记录数n较大,而对稳定性不作要求,并内存容量不宽裕时,应采用快速排序或堆排序。一般来讲,它们的排序速度较快。但快速排序对原序列基本无序的情况,时间复杂度到达O(n^2),而堆排序不会出现类似情况。
(3)当待排序记录的个数较大,内存空间允许,且要求排序稳定时,采用二路归并排序为好。

你可能感兴趣的:(各种排序方法的比较)