阿摩線上測驗 登入

申論題資訊

試卷:114年 - 114 身心障礙特種考試_三等_資訊處理:資料結構#126562
科目:公職◆資料結構
年份:114年
排序:0

申論題內容

二、請詳述利用快速排序法(quick sort)來排序下列資料,經過第一回合(pass) 的處理後,輸出資料的結果為何?(25 分)
50,60,70,80,40,90,10,30,20
(請注意:需列出詳細的處理步驟)

詳解 (共 1 筆)

詳解 提供者:Kevin
我的理解如下,若有錯煩請指教:
 
快速排序之流程為先選定樞紐值(pivot),然後從以樞紐值為中心遞迴排序左右側的數值。我個人會先設計一個partition函數暫定數列的最後一個數(此例中為20)作為樞紐,並由數列的最左開始依序將比樞紐值小的數字放到數列的前方,最後再把樞紐值插入到正確的位置,不考慮遞迴而以迴圈執行的第一次程序如下:
  1. 設定樞紐值為20。
  2. 設定一個指標i指向數列開頭的前一格(此刻i應該是位於 array.index(50)-1 的一個暫定位置),用來記錄所有值應該插入的位置。
  3. 遍歷數列尋找比20小的數字。
  4. 找到10,將指標i+1(使其指向50),然後將50和10交換。
  5. 遍歷完畢,再將指標i+1(指向60),然後與樞紐所處位置的值互換,第一輪結束。
  6. 因此,現在的數列為10, 20, 70, 80, 40, 90, 50, 30, 60。
以上,我的最終答案為10, 20, 70, 80, 40, 90, 50, 30, 60。