标题:插入排序

描述
给出若干个数,将数字储存在数组中,然后使用插入排序,按照升序排列输出数字

输入一个整数n表示n个数,接着输入这n个数。

按照升序输出这个数。

输入输出示例:

输入样例

5

3 2 4 5 4

输出样例

2 3 4 4 5

参考程序

#include<stdio.h>
int main() {
	int i,n,x;
	scanf("%d",&n);
	int a[100];//在有序数组中存储100个int型的数据。 
	for (i=0;i<n;i++)
	{
		scanf("%d",&a[i]);//给数组中i位置上的数据取一个地址。
	}
	int temp,j;//定义一个临时中间变量temp,负责中转变量i与j的数据。 
	for (i=1;i<n;i++)
	{
		j=i-1;
		temp=a[i];
		while(a[j]>temp&&j>=0)
		{
			a[j+1]=a[j];
			j--;
		}
		a[++j] =temp;//完成插入操作。 
	}
	for (i=0;i<n;i++)
	{
	    printf("%d ",a[i]);//注意题目所输出的格式。 
	}
	return 0;
}

解题思路:解题思路:本题通过插入排序的方法将数组中的数进行排序。
首先题目要求运用插入排序,按照升序排列数字,输入头文件与主函数,再定义变量的类型,根据题目描述所说,要首先输入一个整数n表示个数,因此运用数组的方法来进行运算。在这假设其为100。

 因此定义一个储存了100个int型的数据的数组,且给到其地址,以用于输入。

为了方便题中定义的i与j数据的转变,因此定义一个临时的中转变量,来负责此事。

为有数组有不确定n个数据,因此通过插入排序的基本方法

(插入排列的样例格式) 
    int temp;
    int i;
    int j;
    for (i = 1;i<=len;i++)
    {
        temp = a[i];
        for (j = i-1;j >= 1 && a[j] > temp;j--)
        {
            a[j + 1] = a[j];
        }
        a[j + 1] = temp;
    }
完成插入操作,最后按照升序通过循环语句把该数据输出。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值