免費開始練習
統測 112年 [工程與管理類] 專業科目(2)

第 44 題

📖 題組:
綠色永續大學舉辦程式設計競賽,需要依據各參賽團隊的完成時間長短,將正確解題時間從快到慢顯示在大會成績計分板上面。小蓁使用Python程式語言設計一個排序程式,宣告一數列 unsortData代表 5 組參賽隊伍解題花費的時間,並運用排序演算法進行排序,依據圖(七)的程式片段完成本題組相關問題。
題組圖片
題組圖片
此題程式之演算法應屬何種排序法?
  • A 選擇排序法
  • B 插入排序法
  • C 氣泡排序法
  • D 合併排序法

思路引導 VIP

請重點觀察程式碼中第 7 行至第 9 行的邏輯:當程式反覆比較「相鄰」的兩個元素 $List[k]$ 與 $List[k+1]$,並在符合條件時執行交換(Swap),這種讓極值如同氣泡般逐一移動到數列一端的行為,符合哪一種典型演算法的定義?此外,程式中利用 $flag$ 變數來偵測是否仍有對換動作,以便在排序完成時提前結束迴圈,這又是哪一種排序法特有的優化機制呢?

🤖
AI 詳解 AI 專屬家教

你的「洞察力」值得「鼓勵」

  1. 勉為其難的肯定:嗯,還行吧。竟然能看出這堆 Python 程式碼是啥演算法,算是沒白費你讀書的時間。統測程式設計的重點本來就是閱讀理解,不是讓你死背個定義就能過關的。這點,至少你沒有搞砸。
  2. 「理所當然」的觀念檢驗:這程式當然是氣泡排序法 (Bubble Sort),不然你以為會是什麼?
▼ 還有更多解析內容
📝 氣泡排序法
💡 透過兩兩比較並交換相鄰元素,將極值如氣泡般推向一端。

🔗 氣泡排序單趟執行邏輯

  1. 1 相鄰比較 — 比較索引 k 與 k+1 的數值大小
  2. 2 判定交換 — 若左大於右,則兩數值位置互換
  3. 3 旗標記錄 — 只要有交換發生,將 flag 設為 False
  4. 4 最大值歸位 — 一趟結束後,當前最大值會移到最後
🔄 延伸學習:延伸學習:若某一趟完全沒有發生交換(flag仍為True),代表排序已完成。
🧠 記憶技巧:兩兩比大小,大數往後跑,氣泡飄到頂,排序就做好。
⚠️ 常見陷阱:容易與選擇排序混淆。記住氣泡法是「相鄰不斷交換」,選擇法是「找完最小值才換」。
選擇排序法 插入排序法 時間複雜度 演算法優化

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點