各种内排序方法的比较和选择

通常可按照平均时间复杂度将排序方法分为3类:

  • 平方阶O(n2)排序,一般称为简单排序,例如直接插入排序、直接选择排序、冒泡排序
  • 线性对数阶O(nlogn)排序,如快速排序,堆排序和归并排序
  • 线性阶O(n)排序,如基数排序(假定数据的位数d和进制r为常量时)
各种排序方法的性能
排序方法 平均情况 最坏情况 最好情况 空间复杂度 稳定性 复杂性
直接插入排序 O(n2) O(n2) O(n) O(1) 稳定 简单
希尔排序 O(n1.3)     O(1) 不稳定 较复杂
冒泡排序 O(n2) O(n2) O(n) O(1) 稳定 简单
快速排序 O(nlogn) O(n2) O(nlogn) O(logn) 不稳定 较复杂
直接选择排序 O(n2) O(n2) O(n2) O(1) 不稳定 简单
堆排序 O(nlogn) O(nlogn) O(nlogn) O(1) 不稳定 较复杂
归并排序 O(nlogn) O(nlogn) O(nlogn) O(n) 稳定 较复杂
基数排序 O(d(n+r)) O(d(n+r)) O(d(n+r)) O(r) 稳定 较复杂

猜你喜欢

转载自blog.csdn.net/zmeilin/article/details/81222830