排序的知識之前簡單的總結過了,也實現了7種排序,這裏搞點不一樣的。
1.有木有時間複雜度低於O(NlogN)的排序算法?
有。
之前說的下界O(NlogN)是針對基於比較的排序算法而言的,我們是可以不基於(或者不完全基於)比較來實現的。
2.重新劃分一下排序算法的時間複雜度吧
- O(N^2)
- 冒泡排序
- 簡單選擇排序
- 直接插入排序
- O(NlogN)~O(N^2)
- 希爾排序
- O(NlogN)
- 快速排序
- 歸併排序
- 堆排序
- O(N)
- 基數排序
- 桶排序
- 基數排序
- 一些不想搭理的算法(深感設計者腦洞新奇)
- 睡眠排序
- 猴子排序
- 麪條排序
- 雞尾酒排序
3.補充幾種排序的信息
排序算法 | 平均時間複雜度 | 平均最壞時間複雜度 | 空間複雜度 | 穩定與否 |
---|---|---|---|---|
雞尾酒排序 | O(n^2) | O(n^2) | O(1) | 穩定 |
計數排序 | O(n+m) | O(n+m) | O(m) | 穩定 |
桶排序 | O(n) | O(nlogn) | O(n) | 穩定 |