跳到主要内容

8.6 各种内部排序算法的比较及应用

  • 内部排序算法的比较
排序算法空间效率时间效率稳定性备注
插入排序O(1)O(1)最好O(n)O(n)
平均O(n2)O(n^2)
最坏O(n2)O(n^2)
稳定比较依赖初始状态
折半插入排序O(1)O(1)最好O(n)O(n)
平均O(n2)O(n^2)
最坏O(n2)O(n^2)
稳定比较次数约为 O(nlog⁡2n​)O(n\log_2n​)
希尔排序O(1)O(1)大约为 O(n1.3)O(n^{1.3})❌
冒泡排序O(1)O(1)最好O(n)O(n)
平均O(n2)O(n^2)
最坏 O(n2)O(n^2)
稳定
快速排序最好O(log2n)O(log_2n)
平均O(log2n)O(log_2n)
最坏O(n)O(n)
最好O(log2n)O(log_2n)
平均O(log2n)O(log_2n)
最坏O(n)O(n)
❌和划分是否对称有关
在所有内部排序算法中平均性能最优
简单选择排序O(1)O(1)O(n2)O(n^2)❌与初始状态无关
堆排序O(1)O(1)O(log2n)O(log_2n)❌
归并排序O(n)O(n)O(log2n)O(log_2n)稳定
基数排序O(r)O(r)O(d(n+r))O(d(n+r))稳定r 为基数,d 为趟数,n 为元素个数
  • 内部排序算法的应用 - 选取排序方法需要考虑的因素 - 排序算法小结