总览
排序算法 |
平均时间复杂度 |
最好情况 |
最坏情况 |
辅助空间 |
稳定性 |
冒泡排序 |
$O(n^2)$ |
$O(n)$ |
$O(n^2)$ |
$O(1)$ |
√ |
选择排序 |
$O(n^2)$ |
$O(n^2)$ |
$O(n^2)$ |
$O(1)$ |
x |
直接插入排序 |
$O(n^2)$ |
$O(n)$ |
$O(n^2)$ |
$O(1)$ |
√ |
归并排序 |
$O(n * \log(n))$ |
$O(n * \log(n))$ |
$O(n * \log(n))$ |
$O(n)$ |
√ |
快速排序 |
$O(n * \log(n))$ |
$O(n * \log(n))$ |
$O(n^2)$ |
$O(n * \log(n))$ |
x |
堆排序 |
$O(n * \log(n))$ |
$O(n * \log(n))$ |
$O(n * \log(n))$ |
$O(1)$ |
x |
希尔排序 |
$O(n^{1.3})$ |
$O(n)$ |
$O(n^{2})$ |
$O(1))$ |
x |
计数排序 |
$O(n + k)$ |
$O(n + k)$ |
$O(n + k)$ |
$O(n + k)$ |
√ |
桶排序 |
$O(n + k))$ |
$O(n + k)$ |
$O(n + k)$ |
$O(n + k)$ |
√ |
基数排序 |
$O(d * (r + n))$ |
$O(d * (rd + n))$ |
$O(d * (r + n))$ |
$O(n + rd)$ |
√ |
n代表元素长度,r代表元素的基数个数,d代表基数长度, k为辅助数组长度