有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序。要求:
1)输入一个正整数n(0<n<100)。
2)按照从小到大的顺序输入n个整数,用空格分开。
3)输入一个整数m。
4)输出插入m以后的n+1个有序整数。数的输出均采用“%4d”格式。
运行参考示例:
输入1:
5
2 4 6 8 10
7
输出1:
The new array is:
2 4 6 7 8 10
输入2:
4
3 7 9 15
2
输出2:
The new array is:
2 3 7 9 15
运行代码如下:
方法一:把要插入的数放在数组的最前面,然后重新排序,输出
#include<stdio.h>
int main()
{
int a[100],i,n,m,j,k,t;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
printf("\n");
}
scanf("%d",&a[0]);
for(i=0;i<n+1;i++)
{
if(a[i]>a[i+1])
{ t=a[i];a[i]=a[i+1];a[i+1]=t;}
else break;
}
printf("The new array is:\n");
for(i=0;i<=n;i++)
printf("%4d",a[i]);
printf("\n");
return 0;
}
方法二:找到插入的数的相应位置,进行插入,再将后面的数往后移
#include<stdio.h>
int main(void)
{
int n,m,i,t;
int a[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
a[n]=m;
for(i=n;i>0;i--)
{
if(a[i]<a[i-1])
{
t=a[i];
a[i]=a[i-1];
a[i-1]=t;
}
}
printf("The new array is:\n");
for(i=0;i<=n;i++)
printf("%4d",a[i]);
printf("\n");
return 0;
}