基本思路
基本原理如下:對於給定的一組記錄,經過第一輪比較後得到最小的記錄,然後將該記錄的位置與第一個記錄的位置交換;接着對不包括第一個記錄以外的其他記錄進行第二次比較,得到最小記錄並與第二個位置記錄交換;重複該過程,直到進行比較的記錄只剩下一個爲止。
代碼實現
- 確定要插入最小值的位置,從0開始到最後int i = 0; i <len ; i++
- 將每次開始位置上的數字暫定爲最小值min,從開始數字之後一個個和min比較,再把最小值存放到min
- 將最小值所在位置上的數字和開始位置上的數字交換
public static void selectSort(int[] array) {
int len = array.length;
//確定每次開始的位置
for (int i = 0; i < len; i++) {
//設定開始數字爲最小的值最小值
int min = array[i];
int flag = i;
//把最小值存放到min,從開始數字向後一個個和min比較,再把最小值存放到min
for (int j = i + 1; j < len; j++) {
if (min > array[j]) {
min = array[j];
flag = j;
}
}
if (flag != i) {
array[flag] = array[i];
array[i] = min;
}
}
System.out.println(Arrays.toString(array));
}
時間複雜度和空間複雜度
簡單選擇排序的時間複雜度爲O(n²)。