本题实现在有序顺序表中插入一个元素仍然保持其有序状态。
函数接口定义:
void insert(int a[],int *n,int x);
其中 a
是有序顺序表, *n
是数组中元素的个数。 x
是待插入的元素,将x插入后保持顺序表中的元素仍然有序。
裁判测试程序样例:
#include <stdio.h>
#define N 10
void insert(int a[],int *n,int x);
int main()
{
int a[N],n,i,x;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
insert(a,&n,x);
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
/* 请在这里填写答案 */
输入样例:
5
1 2 3 4 6
8
输出样例:
1 2 3 4 6 8
代码实现:
void insert(int a[],int *n,int x)
{
int i=0,k=10,p=0;
for(;i<*n;i++)
{
if(a[i]>x){k=i; break;}
}
if(k==10)a[*n]=x;
else {
for(i=k;i<*n;i++)
{
p=a[i+1];
a[i+1]=a[k];
a[k]=p;
}
a[k]=x;
}
*n=*n+1;
}