在一个有序的数组中找到要插入元素应该在的位置时,该位置后面的元素都要统一往后移,给要插入的元素留出位置。要注意的是,后移时最后一个元素先移动,然后倒数第二个移动,依次类推。。。
有以下两种做法:
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
int a[51];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int x,t;
scanf("%d",&x);
if(x>=a[n-1])
{
a[n]=x;
n++;
}
else
{
for(i=0;i<n;i++)
{
if(x<=a[i])
{
t=i;
break;
}
}
for(i=n-1;i>=t;i--)
{
a[i+1]=a[i];
}
a[t]=x;
n++;
}
for(i=0;i<n;i++)
{printf("%d ",a[i]);}
}
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
int a[51];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int x;
scanf("%d",&x);
for(i=n-1;i>=0;i--)
{
if(x<=a[i])
{
a[i+1]=a[i];
}
else
{
a[i+1]=x;
break;
}
}
for(i=0;i<=n;i++)
{printf("%d ",a[i]);}
}