一个例子讲解用C语言实现插入排序

例子:用插入排序实现”9,8,4,65,76,97,13“的升序

#include<stdio.h>
void InsertSort(int a[],int n){
	int i,j,temp;
	for(i=1;i<n;i++){
		if(a[i]<a[i-1]) {
			temp=a[i];
			for(j=i-1;j>=0;j--){
				if(a[j]>temp) a[j+1]=a[j];	
			else break;	
			}
			a[j+1]=temp;
		}
	

	}

} 

int main()
{
	int n=7;
	int a[]={9,8,4,65,76,97,13};
	InsertSort(a,n);
	for(int i=0;i<n;i++){
		printf("%d  ",a[i]);
	} 
	return 0;	
 } 

将该数字序列存入数组a[n]中,元素就排成了一行,将a[i],(0<i<n)当作是一个标记点;a[i]左边是已经排好序的数组,看看a[i]是不是也能续到左边的升序中,也就是比较a[i]与a[i-1]的大小,续的上就很完美,否则,咱们就来一个for循环,开始遍历左边这个数组,找到合适的位置将a[i]插进去,这里的精髓就是这段代码:

if(a[j]>temp) a[j+1]=a[j];	
		else break;	

它用来实现:将左边部分中大于a[i]的元素右移。主体思路就是如此。

其他要注意的就是循环的边界,以及跳出循环的条件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值