排序——插入排序

国庆假期没机会出去玩,总感觉闲的不行,打算趁此时机看会算法,也没有打算固定一天看多少,算是打发时间。
欸,果然自己还是不太爱学习哇~

今天介绍的是最最最最最最最…基础的算法,排序中的插入排序,虽然我一直不觉得他是算法,但谁让我今天第一个看到的使它呢?

话说今天也是我第一次认真看伪代码,感觉很奇怪,我看书上说吧,有C,C++, Java, Python基础的看起来一点难度没有。我这个人吧,虽然学的不咋地,但是很不巧,C和Python都略有涉及,Java和C++,也算是知道长个啥样,结果当我看到伪代码还是愣住了。

很奇怪的不是这里,而是我决定用C去写一下试试,对,就奇怪在这!
我居然写出来了!

amazing!

咳咳,接下来我先贴一下伪代码吧:

for i = 2 to A.length
	key = A[i]
	// Insert A[i] into the sorted sequence A[1...i-1]
	j = 1 -1
	while j>0 and A[j]>key
		A[j+1] = A[j]
		j = j-1
	A[j+1] = key

不得不说伪代码感觉打起来好累啊,可能是我第一次的原因?

代码不长,原理很简单~
就是双层循环的嵌套,具体的解释和实现,我用以下C语言来写一下:

#include<stdio.h>
int main(){
 int a[6];
 int i, j, key;
 
 for(i = 0; i < 6; i++){
  scanf("%d", &a[i]);
 }
 /*排序主体*/
 for(i = 1; i < 6; i++){            //外围的循环制定需要去插入的数 。 
  key = a[i];                    //将需要去插入的数命名为 key 
  j = i-1;                       //向前插入,且由于是从第二个数开始排序,前面的数已经是有序的了。 
  while(j >= 0 && a[j] > key){   //逐步向前循环插入,即如果插入的数 key 小于该数,则将该数后移一位 
   a[j+1] = a[j];
   j = j-1;
  }
  a[j+1] = key;                  //循环结束,说明key前面已经没有小于它的数,则在此地插入 key 
 }
 
 for(i = 0; i < 6; i ++){
  printf("%d ", a[i]);
 }
 
 return 0;
}

代码块中,我们定义的数组长度为6,以后你们也可以根据情况来自己定义,不过我觉得以后用到的可能性不大,比较还有那么多好算法呢~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值