选择排序(升序):
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));
}