Chapter 6 排序
1- 直接插入排序 O(n2) O(1)
2- 折半插入排序 O(n2) O(1)
適合關鍵字較多
3- 希爾排序O(nlogn) O(1)
又名,縮小增量排序
4- 氣泡排序O(n2) O(1)
一趟排序後一個關鍵字到達最終位置
5- 快速排序O(nlogn) O(nlogn)棧
一趟排序後一個關鍵字到達最終位置
設定一個樞軸,待排序序列越接近無序效率越高
6- 簡單選擇排序O(n2) O(1)
一趟排序後一個關鍵字到達最終位置,與初始序列無關。
7- 堆排序O(nlogn) O(1)
可以看成一棵完全二叉樹。適合關鍵字很多,e.g.從10000個挑10個最小的
8- 二路歸併排序O(nlogn) O(n)
與初始序列無關
9- 基數排序O(d(n+rd)) O(rd)
高位有序,低位有序
總結:
1 時間複雜度
“快些以nlogn的速度歸隊”(快排,希爾,歸併,堆)
2 空間複雜度
快排O(nlogn)
歸併O(n)
基數O(rd)
3 容易插 直接插入
起的好 冒泡
(都是O(n),有序)
4 穩定性:考研情緒不穩定,快些選一堆好友聊聊天(快排,希爾,簡選,堆)
5 1)一趟排序能保證一個關鍵字到達最終位置 交換類(2)/選擇類(2)
2)關鍵字比較次數和原始序列無關 ---- 簡選,折半
3)排序趟數和原始序列無關 ---- 交換類(2)
直接插入 – 順序查詢
折半插入 – 折半查詢
6 內部排序演算法應用:
1)n較小:直接插入/簡選
2)基本有序:直接插入/冒泡
3)n較大:選擇O(nlogn)的“快些歸隊”
4)n很大:關鍵字位數較少可分解:基數排序