排序算法是笔面试中经常被问到的问题,本文主要总结各排序算法的时空复杂度,以做记录。
排序算法时间空间复杂度表
| 排序方法 | 平均时间 | 最坏时间 | 辅助空间 | 稳定性 |
|---|---|---|---|---|
| 冒泡排序 | 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(nlog n) | O(n^2) | O(1) | 不稳定 |
| 堆排序 | O(nlog n) | O(nlog n) | O(1) | 不稳定 |
| 并归排序 | O(nlog n) | O(nlog n) | O(n) | 稳定 |
| 快速排序 | O(nlog n) | O(n^2) | O(nlog n) | 不稳定 |
| 基数排序 | O(d(n+r)) | O(d(n+r)) | O(n) | 稳定 |
注:基数排序中,d 为位数,r 为基数,n 为原数组个数。