选择排序的算法思想:
1. 每次扫描数组,选出最值元素(技巧 定义变量假定数组的第一个元素为最值,然后扫描后续元素依次与假定的最值元素比较更新),然后后跟被扫描数组的第一个元素进行交换
2. 扫描n-1轮,每次扫描一轮,被扫描的数组的大小减去1,也就是剔除数组第一个元素
代码实现:
class Demo {
public static void main(String[] args){
int[] nums = {1,9,5,2};
selectSort(nums);
System.out.println(Arrays.toString(nums));
}
public static void selectSort(int[] arr){
//轮次
for(int i = 0;i < arr.length-1 ;i++){ // n-1轮
int minVal= arr[i]; //假定的最值的索引
int minIdx= i; // 假定的最值的索引
for(int j=i+1;j<arr.length;j++ ) {
if(minVal > arr[j]) {
minVal = arr[j];
minIdx = j;
}
if (minIdx!= i ){ // 不相等才需要交换,否则不需要交换
arr[minIdx] = arr[i]; // i 和 minIdx的元素交换
arr[i] = minVal;
}
}
}
}

原文:https://www.cnblogs.com/hacklife1010/p/14779040.html