Try   HackMD

Ch7: Quicksort

本章節要介紹的 Quicksort 是一種非常實用的演算法,也是現今大多數程式語言內建排序函式所採用的演算法。雖然最壞情形是

Θ(n2),但平均來說它的表現非常優異,並且可以原地排序,是許多實際系統中排序的首選。

7-1 Description

  • 基本流程
    • 選定一個 pivot
    • 分成 high side(通常在右邊)low side(通常在左邊)
      • 比 pivot 的元素放在 low side
      • 比 pivot 的元素放在 high side
    • 之後在左右遞迴繼續 quicksort
      Image Not Showing Possible Reasons
      • The image was uploaded to a note which you don't have access to
      • The note which the image was originally uploaded to has been deleted
      Learn More →

7-2 Performance

  • 時間複雜度
    • 最壞情形
      Θ(n2)
      ,發生在每次 pivot 都選到最小或最大元素
    • 平均狀況
      Θ(nlogn)
  • 空間複雜度:
    O(1)
    ,因為是原地排序,空間使用效率高

7-3 A Randomized Version of Quicksort

  • 每次呼叫時隨機選取一個當 pivot,能平均分配陣列、避免最壞情況。

7-4 Analysis

  • 使用期望值分析法(Expected Value Analysis) 分析執行時間