数列有序!

数列有序!

时间: 1ms        内存:64M

描述:

有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序。

输入:

输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。

输出:

对于每个测试实例,输出插入新的元素后的数列。

示例输入:

3 3
1 2 4
0 0

示例输出:

1 2 3 4

提示:

参考答案(内存最优[748]):

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

参考答案(时间最优[0]):

#include<stdio.h>
int main()
{
	int i,n,a,b,arr[1000],t;
	while(scanf("%d%d",&a,&b))
	{
		if(a==0&&b==0)
		{
			break;
		}
		else
		{
			for(i=0;i<a;i++)
			{
				scanf("%d",&arr[i]);
			}
			arr[a]=b;
			for(n=0;n<=a-1;n++)
			{
				for(int j=0;j<=a-n-1;j++)
				{
					if(arr[j]>arr[j+1])
					{
						t=arr[j+1];
						arr[j+1]=arr[j];
						arr[j]=t;
					}
				}
			}
			for(n=0;n<a;n++)
			{
				printf("%d ",arr[n]);
			}
			printf("%d",arr[a]);
			printf("\n");
		}
	}
	return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注