原理:找出最小值的索引下标,然后将最小值的数和第一个数进行交换,然后再从剩余的数中再找最小值,和第二个数进行交换,依次往下进行。

import java.util.Arrays;
public class Demo7 {
public static void main(String[] args) {
int[] arr = new int[]{1,5,3,4};
for (int i = 0; i < arr.length; i++) {
//声明一个变量,最小值的索引
int minIndex = i;
for (int j = i; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;//找到的最小值的索引
}
}
//交换,把小的值交换到第一位
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
System.out.println(Arrays.toString(arr));
}
}
分析:
i = 0 0 < 4 minIndex = 0
进入到内层循环
* j = 0 0 < 4 arr[0] < arr[0] false j++
* j = 1 1 < 4 arr[1] < arr[0] false j++
* j = 2 2 < 4 arr[2] < arr[0] false j++
* j = 3 3 < 4 arr[3] < arr[0] false j++
* j = 4 4 < 4 false 内层循环结束、i++
i = 1 1 < 4 minIndex = 1
进入到内层循环
* j = 1 1 < 4 arr[1] < arr[1] false j++
* j = 2 2 < 4 arr[2] < arr[1] true minIndex = 2 j++
* j = 3 3 < 4 arr[3] < arr[1] false j+=
* j = 4 4 < 4 false 内层循环结束、i++
* */
本文解析了使用最小值交换法对数组进行排序的过程,通过遍历找到最小值并与其索引位置的元素交换,逐步提升数组的有序性。
324

被折叠的 条评论
为什么被折叠?



