简单总结:
| 比较排序算法 | 时间复杂度 | 空间复杂度| 稳定性|
| --- | --- | --- | --- | --- | --- |
| 简单选择排序 | `O(n^2)` | `O(1)` | 否|
| 冒泡排序 | `O(n^2)` | `O(1)` | 是|
| 直接插入排序 | `O(n^2)` | `O(1)` | 是|
| 归并排序 | `O(n*logn)` | `O(n)` | 是|
| 快速排序 | `O(n*logn)` | `O(logn)` | 否|
| 堆排序 | `O(n*logn)` | `O(1)` | 否|
注意到一点:虽然归并排序、快速排序和堆排序的时间复杂度是一样的,但是实际上快速排序最快。但缺点在于会消耗更多的空间,且算法不具有稳定性。
对于稳定性,最直观的案例就是淘宝购物筛选的时候,我们希望多次筛选后排序结果为所期望值。这个时候就需要使用稳定的排序算法。