小思路:
可以先定义一个最小值的下标(min),再将其与后面每一位(min+1)进行比较,(min 与 min+1 比较),每次比较之后交换变量的值再又得出新的最小值再将最小值下标赋值给 min(最小值下标),确保每次都是最小值与其后一位相比较,
public class SelectSort {
public static void main(String[] args) {
//选择排序
int arr[]=new int[]{1,2,3,3,1,2,23,1};
//选定一个元素的最小值的下标,
for(int i=0;i<arr.length-1;i++){//控制循环的轮数
int min=i; //每轮选定第 i 个为最小值的下标,,i=0,从数组第一个开始比较
//每次都是和最小值下标后一个相比,最小值后一个为 min+1
for(int k=min+1;k<arr.length;k++){
//判断当前 min 元素 与后一个 元素 min+1 的大小
if(arr[min]>arr[k]){ //比较得出最小值,
//将最小值赋值给 min 确保 min 始终为最小值下标,便于与下一个min+1比较
min=k;
}
}
//比较之后得出最小值之后交换两个变量
int temp=arr[i]; //这里是 arr[i]是因为 前面 min 已经获得了新的 最小值,每轮开始循环比较前 min=i
arr[i]=arr[min];//这里是 arr[min] 是因为前面通过比较 min 和 min+1 已经交换值
arr[min]=temp;
}
System.out.println(Arrays.toString(arr));
}
}