各种内排序方法的比较和选择
其他
2018-08-01 06:09:49
阅读次数: 0
通常可按照平均时间复杂度将排序方法分为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