排序算法-插入排序法

一个乱序的数组通过插入排序排列整齐。

从数组第二个数开始,拿着这个数向他的左边进行依次比较,发现比他大的数就插进去,将原来的数向右移动

再接着向左比较

假设开始时 

4 6 7 5 1 

第一遍 4 6 7 5 1

第二遍 4 6 7 5 1 

第三遍 4 6 5 7 1

第四遍4 5 6 7 1 

第五遍4 5 6 1 7 

第六遍4 5 1 6 7

第七遍4 1 5 6 7

第八遍1 4 5 6 7

比较完成




public static void test2(int[] a){
		for(int i=1;i<a.length;i++){  //从第二个数开始遍历
			int tem=a[i]; //先将当前的数记录下来,用它和左边所有进行比较
			int j=i;		//当前位置
			/*
			 * 这里比如说j==5,先将j-1 变成4 因为4大于等于0 所以继续
			 * 用第四个数和我们记录下来想要插入的数进行比较,若大于我们想要插入的数就交换
			 * 4 5 6 7 如果想插入4.5进去 现在是4 5 6 7  4.5
			 * 第一步将4.5记下来 j=4 a[3]>a[4]
			 * 第二步和7比较 7>4.5 则 4 5 6 7 7
			 * 接下来 	4 5  6  4.5  7
			 * 
			 * 接下来 6>4.5
			 * 4 5 6 6 7
			 * 4 5  4.5  6 7
			 * 
			 * 接下来
			 * 4 5 5 6 7
			 * 4  4.5  5  6  7
			 * 
			 * 接下来不满足添加退出while
			 * */
			while(--j>=0 && a[j]>tem){	
				a[j+1]=a[j];
				a[j]=tem;
			}
		}
		System.out.println("排序后:"+Arrays.toString(a));
}

结果:
排序前:[6, 1, 2, 3, 5, 4, 8, 9, 4, 1]
排序后:[1, 1, 2, 3, 4, 4, 5, 6, 8, 9]







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值