插入排序java
来源:互联网 发布:网络监控数据线连接 编辑:程序博客网 时间:2024/06/04 00:31
学习了一下插入排序,记录一下插入排序的理解
插入排序非常类似于整扑克牌。
在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时候,左手中的牌都是排好序的。
假如数组 2,5,1,6,4基准值为角标0的值,就是2,每次比较还有一个比较值,就是当前角标的值 temp,一直到角标变为 1和0比较,则结束,
然后从角标1开始递增,角标大的值应该也比角标小的值大,大则不变,小则替换
步骤1 角标1和角标0比较,temp为[1]=5 因为值大于,所以不变,角标不可左移,结束
步骤2 角标2和角标1比较,temp为[1]=1, 2角标比1角标小,所以替换,为2,5,5,角标继续左移变为1和0比较, temp的值小于2,继续替换为,2,2,5,6,4,角标不可左移结束,此刻0角标的位置替换为temp的值1,数组为 1,2,5,6,4
步骤3 角标3和角标2比较, 3大于2,结束因为不可能比左边要小了
步骤4 角标4和角标3比较,temp=4,4j交表的值小于3角标的值,进行替换为,1,2,5,6,6,继续比较 角标3和temp,得到角标3的值大于temp,替换位置,1,2,5,5,6 继续比较发现均大于左边的值,最后替换temp,角标2=temp为4,得到1,2,5,6,4
//从左向右比较,确定一个比较值for (int i = 1; i < arr.length; i++) {int temp=arr[i]; //当前比较的值,int j=i-1; //当前需要比较值的前一位,
//当出现什么情况 才需要替换
//当前一位必须大于等于0,意思为比较位 不能为角标0和-1比较
//以及 比较值递减的前一位,必须大于当前比较值,才有比较进行替换
while(j>=0&&arr[j]>temp){arr[j+1]=arr[j];//值替换,比如2,5,1,6,4,出现符合条件的值 5和1,用前一位大的值替换掉小的当前位的值 j--;//比较位左移一位继续比较,比如 步骤3中,6和4比较完以后,还需要用5和4比较}
//比较到不可比较,或者当前值已经大于比较值的时候,比如步骤4,就需要替换了,当前j角标为1,//但是但是1的值是2,并不比比较值4大,所以结束比较了。同事也替换位置,将角标2的前一位替换为比较值4//如果最后的值不是4而是0,就会出现j<0的情况。所以j+1=0,就将角标0的位置替换为值0 了arr[j+1]=temp;}
阅读全文
0 0
- Java排序--插入排序
- 排序-插入排序-Java
- 插入排序--直接插入排序[Java实现]
- 插入排序--折半插入排序[Java实现]
- java插入排序之直接插入排序
- 【插入排序】直接插入排序--Java
- 【插入排序】二分插入排序--Java
- 插入排序----直接插入排序----java实现
- [java]插入排序及折半插入排序
- java插入排序--直接插入排序
- Java插入排序
- java插入排序算法
- JAVA 插入排序
- JAVA插入排序分析
- java实现插入排序
- 插入排序java
- java 插入排序
- 插入排序(java)
- same-tree/symmetric-tree
- 部署Jenkins
- K3 CLOUD 插件的学习
- USACO 1.4 Combination Lock
- POJ
- 插入排序java
- keccak算法及实现
- malloc函数的学习
- linux鸟哥视频学习笔记03
- 什么是集群
- Integer to Roman
- 深度学习框架---keras的层次示意图---方便直观理解---适用sklearn模型的展示
- 百度地图API使用到的几个方法总结
- 考试总结18