一、思路
原始数组:101,34,119,1
第一次排序:1 ,34,119,101
第二次排序:1,34 ,119,101
第三次排序:1,34,101 ,119
说明:
1.选择排序一共有(数组大小-1)次排序;
2.每一次排序,又是一个循环:
(1)先假定当前这个数是最小数
(2)然后和后面的每个数进行比较,如果有发现比当前数更小的数,就重新确定最小数,并得到下标;
(3)当遍历到数组最后时,就得到本轮最小数和下标;
(4)交换。
二、代码
public static void selectSOrt(int[] arr) {
//第1轮
//原始的数组:101, 34, 119, 1
//第一轮排序: 1,34,119,101
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;
int min = arr[i];
for (int j = i + 1; j < arr.length; j++) {
//换成< 则是从大到小排序
if(min> arr[j]) { //说明假定的最小值并不是最小
//重置min
min = arr[j];
//重置minIndex
minIndex = j;
}
}
//将最小值,放在arr[0],即交换
if(minIndex != i) {
arr[minIndex] = arr[i];
arr[i] = min;
}
System.out.println("第"+ (i + 1) +"趟排序后的数组:");
System.out.println(Arrays.toString(arr));
}
}