// 选择排序
int[] nums = {2,3,1,4,6,5,7};
// 外层for循环,依次找最小值放到第一位,这样到最后一位不需要再次执行循环,所以循环次数为.length-1.
for (int j = 0;j < nums.length-1;j++){
// 定义一个min 用来接收数组内最小值的坐标
int min = j;
// 内层循环 i=j+1 用来使得每次循环i的初始值为j+1
// 第一次循环 i=1;第二次循环 i=2;第三次循环为 i = 3;最多循环 i=6(i=length-1)
// 第一次循环用第i(i=j+1=1)个数跟第0个数(min=j=0);
// 第二次循环用第i(i++=i+1=2)个数跟第0个数比(min=j=0);
// 第三次循环用第i(i++=i+2=3)个数跟第0个数比(min=j=0);
for(int i = j + 1;i < nums.length;i++){
// 循环使用if语句来判断:下标i对应的数字是否小于下标为j的数字。
if(nums[i] < nums[min]){
// 利用循环i自增的原则,找到最小值的坐标并且赋值给min
min = i;
}
// 把最小值(nums[min])的值找到存在临时空间temp里,
int temp = nums[min];
// 将第0个数字的值放在之前最小的值的位置
nums[min] = nums[j];
// 把存在temp中的最小值(nums[min]){min为最小值的下标,nums[min]为该数组里的最小值}放在nums[j]的位置
//(j第一次循环的下标为0,第二次为1、第三次为2。依次向后放入当前最小值)。
nums[j] = temp;
}
}
选择排序的思路
最新推荐文章于 2022-08-19 09:50:23 发布