🔍 選擇排序法 (Selection Sort) 核心概念

選擇排序法是一種非常直觀的演算法,它的核心思想就是「挑選最好的」。運作起來就像在從籃子裡挑選最小(或最大)的蘋果,每次都把剩下的蘋果中最小的那一顆找出來,放到已經排好的隊伍最後面。

🎯 三步核心流程

  1. 掃描 (Scan): 遍歷右側的「未排序區域」,找出其中的最小值。
  2. 交換 (Swap): 將找到的最小值,與未排序區域的「第一個數字」交換位置。
  3. 推進 (Advance): 此時該數字已歸入左側「已排序區域」,將分界線向右推進一格,重複步驟。

⏱️ 效能與複雜度

  • 所有情況: 時間複雜度皆為 O(n²),因為無論陣列是否已排好,它都必須盲目掃描完剩下的元素。
  • 穩定性: 通常是不穩定排序(因為跨越式的交換容易打亂數值相同元素的原始順序)。
  • 空間佔用: 極小,僅需 O(1) 的額外空間。

💡 它最大的賣點是什麼?

雖然速度不快,但它有一個無可取代的特點:交換次數極少(最多只需 n-1 次交換)。在某些特殊的硬體環境中(例如 EEPROM 或早期快閃記憶體),當「寫入/交換」的成本遠大於「讀取/比對」時,選擇排序法就是救星!

選擇排序法 (Selection Sort)

回首頁

點擊「開始排序」觀察過程