选择排序实现原理
一串无序数字 例: {6,3,7,9,5,1,4,8},首先我们假设数组arr[0]为最小值,让这个数字和后面的数字依次比较,如果还有比arr[0]更小的数字,把最小值放在arr[0]的位置。下面代码演示:
public class SelectSort {
public static void main(String[] args) {
int[] arr = {3,6,7,9,5,1,4,8};
sort(arr);
System.out.println(Arrays.toString(arr));
}
public static void sort(int[] arr) {
for(int j=0;j<arr.length-1;j++) {
//假定最小值为arr[j] j=0;
int min = arr[j];
//最小值的下标
int index = j;
//需要比对的肯定是arr[0]后面的数,所以+1,第一个最小值找到后,就没有必要再次比对,所以i=j+1,比对的次数不停的减少
for(int i=j+1;i<arr.length;i++) {
//判断如果最小值比arr[i]大的话,说明arr[i]是最小值,循环此操作,可能还有更小的值
if(min>arr[i]) {
//保存最小值
min = arr[i];
//保存最小值的下标
index = i;
}
}
//找到最小值后,把最小值放到arr[0]的位置,第二次为arr[1],以此内推
arr[index] = arr[j];
arr[j] = min;
}
}
}