数组的插入排序

排序,排序,接下来我们还是学习排序。

插入排序,把初始数组的第一位置的数先拿出来,摆在新数组的第一位;拿出初始数组的第二位置的数,把它与新数组的数进行比较,若它比新数组的第一位数小,则将新数组的第一位置的数摆在第二位上,再将拿出来的初始数组的数摆在新数组的第一位置上(注意,这里不是交换);拿出初始数组中的第三位置上的数,与新数组中的数进行比较,要从后面开始比较,若拿出来的数小于新数组的第二位置的数,则将新数组的第二位置的数摆在新数组的第三位置上,再将拿出来的数与新数组的第一位置上的数比较,若没有新数组的第一位置上的数大,则再将拿出来的数摆在新数组的第二位;........

初始数组顺序【2        9        6        1        7        4】

首先,我们取出初始数组第一位置上的数    :    

                      【2                                                】

接下来,我们拿出初始数组第二位置上的数来比较:      

            排序后【2        9                                        】

拿出初始数组第三位置的数从后面开始比较:

            排序后【2        6        9                             】

...........

            排序后【1        2        6        9                】

............

            排序后【1        2        6        7        9         】

............

             排序后【1        2        4        6        7        9】

如此下来,就会发现这组数都从小到大的顺序排列。

这里着重强调,不是交换,是把新数组中的数向后排!!!!

下面我直接甩出代码:

#include<stdio.h>
int main()
{
	int i,j,tem,n,pos;
	int a[100005]={0};
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);			
	}
	for(i=1;i<n;i++)      
	{
		tem=a[i];
		pos=i-1;
		while((pos>=0)&&(tem<a[pos]))
		{
			a[pos+1]=a[pos];
			pos--;
		}
		a[pos+1]=tem;	
	}	
	for(i=0;i<n;i++)
	printf("%d",a[i]);
	return 0;
}

记得点赞,收藏,加关注哦!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值