演算法原理:

  1. 將數組分為已排序區域和未排序區域
  2. 在未排序區域中找到最小元素
  3. 將找到的最小元素與未排序區域的第一個元素交換
  4. 重複步驟2-3,直到所有元素都排序完成

時間複雜度分析:

  1. 最壞情況(Worst Case): O(n²)
    • 外層循環執行 n-1 次
    • 內層循環第一次執行 n-1 次,第二次 n-2 次,依此類推
    • 比較次數:(n-1) + (n-2) + … + 1 = n(n-1)/2
    • 交換次數:最多 n-1 次
  2. 最好情況(Best Case): O(n²)
    • 即使數組已經排序
    • 仍然需要執行所有的比較操作
    • 只是交換次數可能減少
  3. 平均情況(Average Case): O(n²)
    • 與最壞情況相同
    • 選擇排序的特點是比較次數固定

空間複雜度:

  • O(1),只需要一個臨時變量來進行交換

選擇排序的特點:

  1. 優點:
    • 實現簡單
    • 交換次數少(最多 n-1 次)
    • 對於小規模數據較為高效
  2. 缺點:
    • 時間複雜度固定為 O(n²)
    • 對於大規模數據效率低
    • 不穩定排序(相同值的相對順序可能改變)