八大基本排序算法之直接插入排序

{
/*
* 直接插入排序
* 1.从第二位开始遍历
* 2.当前数(第一趟是第二位)与前面的数依次比较,如果前面的数大于当前数,则将这个数
* 放在当前数的位置上,当前数的下标-1;
* 3.重复以上步骤,直到当前数不大于前面的某个数为止,这时将当前数放到这个位置
* (1-3)步是保证当前数的前面都是有序的,内层循环的目的就是将当前数插入到前面的有序序列里
* 4.重复以上3步,直到遍历到最后一位数,并将最后一位数插入到合适的位置,插入排序结束。
*
* */
int[] n = new int[]{2, 1, 22, 3, 4, 43};
int temp = 0, j;
for (int i = 1; i < n.length; i++) {
temp = n[i];
for (j = i; j > 0; j--) {
//如果前面的数大于当前数,则把前面的数向后移动一个位置
if (n[j - 1] > temp) {
n[j] = n[j - 1];
//第一个数已经移动到第二个数,将当前数放到第一个位置,这一趟结束
//这个逻辑只用来处理当第一个索引位置的元素小于第二个索引位置的元素时用到
//其他情况都走下面的逻辑
if (j == 1) {
n[j - 1] = temp;
break;
}
} else {
//如果当前数前面的数不大于当前数,将当前数放到j的位置,这趟结束
n[j] = temp;
break;
}
}
}
System.out.println(Arrays.toString(n));
}
posted @   时光不染-^^-  阅读(160)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示