3.3.1 - Quick Sort
Last updated
Last updated
採用Divide and Conquer策略。選定一個pivot key使得:
A[1]~A[q-1] ≤ p.k
A[q+1]~A[n] ≥ p.k
此時資料被分成左右兩個sublist,再各自排列,當左右sublist排完,整個資料也就排序完成。
排序步驟範例:
找到大於p.k的位置, 找到小於p.k的位置
找到大於p.k的位置, 找到小於p.k的位置
當 時,p.k和 交換位置,此時
採用同樣方法sort({2,3,4})
、sort({8,6,9,7})
Time Complexity:
Quick sorting is a unstable sorting method.
Best Case:
p.k的位置恰將資料分割成兩等份
C*n為分割所花時間
Worst Case:
p.k恰好是最大值或是最小值,使得分割無效果
C*n為分割所花時間
Space Complexity: ~
額外空間需求來自於recursion所需的stack,stack size取決於recursion call的次數。
Best Case:
每次p.k的位置恰將資料分割成兩等份,經過k次呼叫後只剩一筆Data,
Worst Case:
p.k恰好是最大值或是最小值,使得分割無效果,資料大小為n, n-1, n-2,...,共需n次呼叫