選擇排序是一種簡單直觀的排序演算法,其核心思想是:每一趟從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序數據元素排完。
public static void selectSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
int min = i; // 假設當前位置為最小值索引
// 在未排序區間尋找真正的最小值
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[min]) {
min = j; // 更新最小值索引
}
}
// 交換找到的最小值與當前位置
Sort.swap(array, i, min);
}
}
| 情況 | 時間複雜度 | 說明 |
|---|---|---|
| 最好 | O(n²) | 無論輸入如何,都需執行完整比較 |
| 平均 | O(n²) | 固定比較次數 |
| 最壞 | O(n²) | 固定比較次數 |
| 空間複雜度 | O(1) | 原地排序,只需常數額外空間 |
雖然選擇排序在實務大數據排序中較少使用,但其思想簡單、實作容易,是學習排序演算法的良好入門題目。