第一次从arr[0到]arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]到arr[n-1]中选取最小值,与arr[1]交换,第三次从arr[2]到arr[n-1]中选取最小值,与arr[2]交换,…,第i次从arr[i-1]arr[n-1]中选取最小值,与arr[i-1]交换,…, 第n-1次从arr[n-2]~arr[n-1]中选取最小值,与arr[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。
动态图如下:
选择排序特点:每次选取最小的与前面的交换。
选择排序执行过程:
public static void main(String[] args) {
int[] arr = new int[]{8, 65, 41, 28, 6, 1, 4, 5, 32, 9, 10};
System.out.println("排序前");
System.out.println(Arrays.toString(arr));
System.out.println("排序后");
for (int i = 0; i < arr.length - 1; i++) {
int index = i;
int min = arr[i];
for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
index = j;
}
}
arr[index] = arr[i];
arr[i] = min;
System.out.println(Arrays.toString(arr));
}
}
输出结果: