排序方法 |
平均时间复杂度 |
最坏情况时间复杂度 |
额外空间复杂度 |
稳定性 |
简单选择排序 |
O(N^2) |
O(N^2) |
O(1) |
不稳定 |
直接插入排序 |
O(N^2) |
O(N^2) |
O(1) |
稳定 |
冒泡排序 |
O(N^2) |
O(N^2) |
O(1) |
稳定 |
希尔排序 |
O(N^d) |
O(N^2) |
O(1) |
不稳定 |
堆排序 |
O(NlogN) |
O(NlogN) |
O(1) |
不稳定 |
快速排序 |
O(NlogN) |
O(N^2) |
O(NlogN) |
不稳定 |
归并排序 |
O(NlogN) |
O(NlogN) |
O(N) |
稳定 |
基数排序 |
O(D(N+R)) |
O(D(N+R)) |
O(N+R) |
稳定 |
注:logN以2为底
基数排序中:R为桶数,D为分配收集的趟数,也就是关键字按基数分解后的位数