Chapter 6 排序

糖醋麻辣蝦發表於2018-03-26

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很大:關鍵字位數較少可分解:基數排序

 

相關文章