Description
在有序的数列中插入若干个数,每插入一个数都要保持有序。
Input
输入两行,第一行输入5个有序数,第二行输入若干个插入的数,以-1结束。
Output
输出仅一行,输出所有数,用空格隔开。
Sample Input
3 5 7 9 11
15 0 8 -1
Sample Output
0 3 5 7 8 9 11 15
Source
SUBMIT
方法一
#include <stdio.h>
int main()
{
int n=5,x,i;
int a[20];
for ( i = 0; i <n; i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&x);
while (x!=-1)
{
for ( i = n-1; i>=0&&x<a[i]; i--)
{
a[i+1]=a[i];
}
a[i+1]=x;//本来是赋给a[i],但出循环时执行i--,所以这里x赋给了i+1
n++;
scanf("%d",&x);
}
for ( i = 0; i <n; i++)
{
printf("%d ",a[i]);
}
system("pause");
return 0;
}
方法二
#include <stdio.h>
#define N 100
int main()
{
int a[N],n,i,c=0,j,t;
for ( i = 0; i <5; i++)
{
scanf("%d",&a[i]);
c++;
}
scanf("%d",&n);
a[c]=n;
c++;
while (1)
{
scanf("%d",&n);
if (n==-1)
{
break;
}
else
{a[c]=n;
c++;}
}
for ( i = 0; i <c-1; i++)
{
for ( j = c-1; j>0; j--)
{
if (a[j]<a[j-1])
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
}
for ( i = 0; i <c; i++)
{
printf("%d ",a[i]);
}
system("pause");
return 0 ;
}