第一层for循环
从数组0索引开始,和后面每个索引的数组值进行比较,获取0索引处最小的值,
依次由1索引开始,和后面每个索引的数组值进行比较,获取1索引处最小的值,
以此类推,一共要操作length-1次,由于索引从0开始,所以外部循环的范围就是<length-1
第二层for循环
在循环中,最小索引的数组值大于后面的索引的数组值,则,把该索引值赋给最小索引;
排序
每一轮内循环都会得到该轮循环中,数组的最小值,并把索引赋给了minIndex.由此可以用第一层for循环的i来操作数组,把每轮第二层for获取的最小值赋给nums数组,从而排序
代码如下
package javase.array;
import java.util.Arrays;
public class ChooseSort {
public static void main(String[] args) {
int [] nums = {3,2,1};//定义排序目标数组
/*
外层循环控制找出的具体最小值的次数,
3个数据,需要操作2次最后一个数据不需要再次比较
所以循环2次 = i从0到1次也就是nums.length-1
*/
for (int i = 0; i < nums.length-1; i++) {
int minIndex = i;//定义最小值数组索引
/*
内层循环通过最小索引的数组值和数组中其他值分别比较,
若最小索引的值大于比较值,则把比较值的索引赋给最小索引
*/
for (int j = i+1; j < nums.length; j++) {
if (nums[minIndex]>nums[j]){
minIndex = j;
}
}
/*
每一轮内部循环获得的分段最小值进行交换,
把最小值依次赋给外部循环控制的nums数组的每一个索引的值
*/
int temp = nums[minIndex];
nums[minIndex] = nums[i];
nums[i] = temp;
}
System.out.println(Arrays.toString(nums));
}
}
版权声明:本文为SHEN548784原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。