排序算法的比较
程序员文章站
2022-05-23 11:01:23
...
排序方法 平均时间 最坏情况 辅助空间
简单排序 O(N^2) O(N^2) O(1)
快速排序 O(NlogN) O(N^2) O(logN)
堆排序 O(NlogN) O(NlogN) O(1)
归并排序 O(NlogN) O(NlogN) O(n)
基数排序 O(d(n+rd)) O(d(n+rd)) O(rd)
(1) 从平均性能而言, 快速排序最佳,但在最坏情况下时间性能不如堆排序和归并排序。而后两者比较的结果是,在n较大时,归并速度更快,但空间消耗多
(2) "简单排序"包括除希尔排序之外的所有插入排序,起泡排序和简单选择排序,其中以直接插入排序最为简单,当序列基本有序或N的规模较小时,它是最佳的排序方法。因此常常将他和其他的排序方法,诸如快速排序、归并排序等结合在一起使用。
(3) 计数排序的时间复杂度也可携程O(d*n)。他是最适合于N值很大而关键字比较小的序列。若关键字也很大,而序列中大多数记录的"最高位关键字"均不同,则亦可先按"最高关键字"不同将序列分成若干"小"的子序列,而后进行直接插入排序。
(4) 稳定性。基数排序以及所有时间复杂度为O(N^2)的简单排序法也是稳定的,然而,快速排序、堆排序和希尔排序等时间性能较好的排序方法都是不稳定的。一般来说,排序过程中的"比较"是在"相邻连个记录"间进行的排序都稳定的。由于大多数情况下排序是按记录的主关键字进行的,则所用的排序方法是否稳定无关紧要。若排序按记录的次关键字进行,则应该根据问题所需慎重选择排序方法及其描述算法。
上一篇: 排序汇总