八大排序算法复杂度

排序算法是笔面试中经常被问到的问题,本文主要总结各排序算法的时空复杂度,以做记录。

排序算法时间空间复杂度表

排序方法 平均时间 最坏时间 辅助空间 稳定性
冒泡排序 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 为原数组个数。

参考资料