有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数,请依次插入到序列中,替换新的序列仍然有序
输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。对于每个测试实例,输出插入新的元素后的数列。
#include<stdio.h>
int main()
{
int m,n,i,j,t,a[109];
while(scanf("%d%d",&m,&n)!=EOF)
{
if(m==0&&n==0)break;
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);//把数列存入数组中
}
for(i=0;i<m;i++)
{
if(a[i]>=n)//从第一个数开始依次往后与n比较直到第i个数大于等于n
{
for(j=m;i<j;j--)//这时我们把从i往后的数依次往后移一位
{
a[j]=a[j-1];
}
a[i]=n;break;//再把n赋给a[i]
}
if(a[m-1]<n)//可能数列从第1个数到最后一个数都比n小
{
a[m]=n;//这时我们直接把n赋给数列最后一个数的后一位,结束循环
break;
}
}
for(i=0;i<=m;i++)//输出数列
{
if(i!=m)
{
printf("%d ",a[i]);
}
else
{
printf("%d\n",a[i]);
}
}
}
return 0;
}