本题实现在有序顺序表中插入一个元素仍然保持其有序状态。
函数接口定义:
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,t;
for(i=*n-1;i>=0;i--)
{
if(x>=a[i])
{
a[i+1]=x;
break;
}
else
{
t=a[i];
a[i]=x;
a[i+1]=t;
}
}
(*n)++;}