排序名称 | 最好时间复杂度 | 最坏时间复杂度 | 平均时间复杂度 | 空间复杂度 | 稳定性 |
冒泡排序 | O(n) | O(n^2) | O(n^2) | O(1) | 稳定 |
选择排序 | 无 | O(n^2) | 无 | O(1) | 不稳定 |
插入排序 | O(n) | O(n^2) | O(n^2) | O(1) | 稳定 |
计数排序 | O(n + k) | O(n + k) | O(n + k) | O(n + k) | 稳定 |
希尔排序 | --------------------- | --------------------- | ------------------ | O(1) | 不稳定 |
快速排序 | O(nlog2^n) | O(n^2) | O(nlog2^n) | O(log2^n) | 不稳定 |
归并排序 | --------------------- | --------------------- | O(nlog2^n) | O(n) O(log2^n) | 稳定 |
堆排序 | --------------------- | --------------------- | O(nlog2^n) | O(1) | 不稳定 |
基数排序 | (max位数)k*n | n+r(桶) | 稳定 |
注:建堆的时间复杂度O(n)
堆排序时间复杂度O(nlog2^n),没有最好、最坏,平均之说。
归并排序、基数排序、堆排序,没有最好、最坏,平均之说。
基数排序最稳定。