// 插入排序
// 外层循环
for (int i = 1;i < nums.length;i++){
// 传说中的二话不说直接把要插入的数保存起来!
int temp = nums[i];
// 第一次循环 j = 0; 第二次循环 j = 1;
// 因为第一次循环j=0;j-- 内层循环只能执行一次
for (int j = i - 1;j >= 0;j--){
// 第一次循环将要移动的数与第1个数字相比较,若要移动的数比第一位数字小,则进行数值右移操作。
// 第二次循环,该操作执行两次,第一次若移动的数字比前一位数字大,则执行else语句。
if(temp < nums[j + 1]){
// 若小于第一个数字,则用大的那个数字将第一位的数字覆盖
nums[j + 1] = nums[j];
// j每次循环递减,首次循环因为是j=0,执行上部操作后进入内层if,将最小的数字放到第一位。
// 若第二次循环,上部操作需要执行两次,将需要先将移动的第二个数字与第一个数字相比较。
if(j == 0){
// 执行该条语句的条件是,要移动的数字(temp)要比之前循环移动的数字都小
// 将这最小的数字(temp)直接放入到数组的第一位。
nums[0] = temp;
}
}else{
// 将要移动的数字放到原本的位置,并且结束本次循环
nums[j + 1] = temp;
break;
}
}
}
插入排序的代码及思路
最新推荐文章于 2023-09-23 17:47:53 发布