#排序演算法#【6】排序演算法總結

範長法@三月軟體發表於2014-07-21

  前面幾篇部落格分別羅列和總結了近期學習的幾種排序演算法,今天總結一下。

  1. #排序演算法#【1】概述、氣泡排序、選擇排序
  2. #排序演算法#【2】直接插入排序、希爾排序
  3. #排序演算法#【3】堆排序
  4. #排序演算法#【4】快速排序
  5. #排序演算法#【5】合併排序

  排序演算法有很多,在實際使用的時候需要根據情況選擇合適的相應演算法。每種演算法都有其優缺點,判斷一個演算法的優劣,可以參考的標準:

  1. 計算的複雜度:依據排序資料量的大小(n),好的表現是O(nlogn),最差表現為O(n2)
  2. 系統資源的使用:包括計算機記憶體以及其他資源的使用,主要考慮計算機輔助記憶體的多少
  3. 穩定度

幾種演算法的複雜度:

  1. 氣泡排序法:平均速度和最壞情況下的速度都為O(n2)
  2. 快速排序法:平均速度為O(nlogn),比氣泡排序法快,單在最壞的情況下與氣泡排序法相同,為O(n2)
  3. 簡單選擇排序法,平均速度和最壞情況下的速度都為O(n2)
  4. 堆排序法:平均速度和最壞情況下的速度都為O(nlogn)
  5. 希爾排序法:平均速度為O(n3/2),最壞情況下速度為O(n2)
  6. 合併排序法:平均速度和最壞情況下的速度都為O(nlogn)

幾種演算法的穩定度:

  • 穩定的演算法:
    • 氣泡排序法
    • 插入排序法
    • 合併排序法
  • 不穩定的演算法:.
    • 選擇排序法
    • 希爾排序法
    • 堆排序法
    • 快速排序法

選擇排序演算法的幾個參考:

  1. 當資料為正序時,使用直接插入排序法、氣泡排序法和快速排序法
  2. 當n值比較小(如n<=50),可採用直接插入排序法或選擇排序法。當記錄規模比較小時直接插入排序較好;否則因為直接選擇移動的記錄數多於直接插入,應選擇直接選擇排序
  3. 當n值比較大時,則應採用時間複雜度為O(nlogn)的排序演算法,如快速排序、堆排序或合併排序
  4. 當待排序的關鍵字是隨機分佈時,快速排序的平均時間最短
  5. 若要求排序穩定,則可選擇合併排序

相關文章