插入排序算法总结

插入排序算法(总结自《算法导论》)

排序问题

输入:n个数的一个序列<a1,a2,…,an>。
输出:输入序列的一个排序<b1,b2,…,bn>,满足b1<b2<b3<…<bn。

伪代码

INSERTIONSORT(A){
for j=1 to A.length-1
	key=A[ j ];
	i=j-1
	while(i>=0&&A[ i ]>key)
		A[ i+1 ]=A[ i ];//相当于把A[ j ]提出来放在key里面,然后A[ i+1 ]=A[ i ];
		i=i-1;          //往前移一位;
	A[ i+1 ]=key;//这步放在while外面,因为它不是交换位置,而是相当于把A[j]提出来,等前面
		     //移完位置后在放入其中。
}//不能用A[j]=A[i],这样会出错。

取自《算法导论》插入排序伪代码
相当于摸牌,从第一张开始摸牌,一张一张的进行摸取,然后插入手中。

java代码(数组实现)

 public static void INSERTIONSORTJ(int []A){ 
  int key,i;
  for(int j=1;j<A.length;j++) {
  	key=A[j];
  	i=j-1;
  	while(i>=0&&A[i]>key) {   //将A[j]提出来,然后将前面的数据往后移动,移动的时候a【i】==a【i+1】;
    		A[i+1]=A[i];
    		i=i-1;
   		}
   	A[i+1]=key;
  }
 }

实现过程


先摸取第一张牌5,它不用排序,直接放入手中,然后摸取第二张牌2,5比2大,所以把2放5的前面,代码过程就是先把2提出去放入key中,然后把5往后移一位,这个时候A[1]=A[2];然后把key的值给A[1],他不是冒泡排序那样一直交换位置,而是最后直接把数放到该放的位置。图b中,再摸取一张4,与5比较,依次类推。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值