選擇排序(升序):
1,通過循環找到數組中的最小值放到第1位,然後再剩餘元素中找到最小值放到第2位
高亮標記的元素就是下一輪要找出最小元素的範圍,找出最小元素放到高亮標記的最左邊
代碼:
/**
* 找到最小值交換位置
*/
public void forInner() {
int arr[] = {9,5,7,3,10,4};
//找出數組中最小的元素和第一個元素交換
int minIndex = 0;
for (int i = minIndex + 1; i < arr.length; i++) {
if (arr[i] < arr[minIndex]) {
minIndex = i;
}
}
int temp = arr[0];
arr[0] = arr[minIndex];
arr[minIndex] = temp;
System.out.println(Arrays.toString(arr));
//從第2個元素開始到數組最後1個元素中找出最小值和第2個元素交換
//直到從倒數第2個元素和倒數第1個元素找最小值,將最小值和倒數第2個元素交換
}
/**
* 選擇排序(升序)
*/
public void select() {
int arr[] = { 9, 5, 7, 3, 10, 4 };
System.out.println(Arrays.toString(arr));
for (int j = 0; j < arr.length - 1; j++) { //控制輪數
int minIndex = j;
for (int i = minIndex + 1; i < arr.length; i++) { //指定範圍找到最小值
if (arr[i] < arr[minIndex]) {
minIndex = i;
}
}
int temp = arr[j];
arr[j] = arr[minIndex];
arr[minIndex] = temp;
// System.out.println(Arrays.toString(arr));
}
System.out.println(Arrays.toString(arr));
}