时间 : 19-05-16 栏目 : Java技术 作者 : 冰镇宝贝321 评论 : 1 点击 : 2,192 次
插入排序的思想主要放在"插入"二字,主要就是从待排序列中取第一个待排元素,然后与其前面已排序列的元素比较,比较成功(或大或小),那么就把这个已排元素往后挪一个位置,空出来的位置就是插入的位置,依次循环.
要排的序列为 int array[] = {12,32,2,4,6,54,34,76,89,32,14};排序为升序排序.
(红色代表已排序列,黑色代表待排序列,绿色代表待排序列中的第一个元素)
第一次: {12,32,2,4,6,54,34,76,89,32,14 } 32前边有序序列没有比32大的元素,不需移动 ->{12,32,2,4,6,54,34,76,89,32,14}
第二次: {12,32,2,4,6,54,34,76,89,32,14 } 2比12小, 12,32往后移一位 -> {空位,12,32,4,6,54,34,76,89,32,14} ->2插入空位 -> {2,12,32,4,6,54,34,76,89,32,14}
第三次: {2,12,32,4,6,54,34,76,89,32,14} 4比12小, 12,32往后移一位 -> {2,空位,12,32,6,54,34,76,89,32,14} ->4插入空位->{2,4,12,32,6,54,34,76,89,32,14}
.........
第N次:{2, 4, 6, 12, 14, 32, 32, 34, 54, 76, 89}
基本思想已经说完,需要注意的是,待排序列的第一个元素,需要存到临时变量,否则已排序列往后移动时会覆盖
package 排序算法; public class ChaRuPaiXu { public static void main(String[] args) { /** * 简单的说,就是插入排序总共需要排序N-1趟, * 从index为1开始,讲该位置上的元素与之前的元素比较,放入合适的位置, * 这样循环下来之后,即为有序数组。 * */ int [] charu= {12,32,2,4,6,54,34,76,89,32,14}; int temp; for(int i=1;i<charu.length;i++) { for(int j=0;j<i;j++) { if(charu[i]<charu[j]) { //把小的拿出来,把前面的往后覆盖到该位置 temp=charu[i]; for(int k=i;k>j;k--) { charu[k]=charu[k-1]; } charu[j]=temp; } } } for(int cr:charu) { System.out.println(cr); } } }
除非注明,文章均为( 冰镇宝贝321 )原创,转载请保留链接: https://bkqv5.com/archives/349.html