國家安全情報人員考試五等考試-資訊組資料處理大意110 年第 16 題單選題
有一個數列 5 39 56 88 9 23 2 44 31 69,若採用選擇排序法(Selection Sort)將其由左至右,由小到大排序。請問要執行幾次位置互換(Swap)的動作?
C正確答案
選擇排序每輪找最小值與當前位置交換,共需9次交換。
為什麼答案是 C
正確。10個元素經9輪選擇,每輪皆發生交換,共9次。
載入中…
完整詳解
Pro · 無限重點 選擇排序每輪找最小值與當前位置交換,共需9次交換。
依序找未排序區最小值與首位互換:
第1輪:5↔2 → 2 39 56 88 9 23 5 44 31 69
第2輪:39↔5 → 2 5 56 88 9 23 39 44 31 69
第3輪:56↔9 → 2 5 9 88 56 23 39 44 31 69
第4輪:88↔23 → 2 5 9 23 56 88 39 44 31 69
第5輪:56↔31 → 2 5 9 23 31 88 39 44 56 69
第6輪:88↔39 → 2 5 9 23 31 39 88 44 56 69
第7輪:88↔44 → 2 5 9 23 31 39 44 88 56 69
第8輪:88↔56 → 2 5 9 23 31 39 44 56 88 69
第9輪:88↔69 → 排序完成,共9次交換。
逐選項分析
B✕
8次仍少一次,選擇排序n個元素最多需n-1=9次交換。
C✓ 正確
正確。10個元素經9輪選擇,每輪皆發生交換,共9次。
注意:即使當前位置已是最小值,有些實作仍算一次交換;但標準作法不交換,本題每輪皆需交換。