在一个升序排列的数组中插入一个数 (10 分)
编写函数fun,在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
函数接口定义:
void fun(int a[N],int number);
其中 a
和 number
都是用户传入的参数。函数在一个已按升序排列的数组 a
中插入一个数 number
,插入后,数组元素仍按升序排列。
裁判测试程序样例:
#include <stdio.h>
#define N 11
void fun(int a[N],int number);
int main()
{
int i,number,a[N]={1,2,4,6,8,9,12,15,149,156};
scanf("%d",&number);
printf("The original array:\n");
for(i=0;i<N-1;i++)
printf("%5d",a[i]);
printf("\n");
fun(a,number);
printf("The result array:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}/* 请在这里填写答案 */
输入样例:
6
输出样例:
The original array:
1 2 4 6 8 9 12 15 149 156
The result array:
1 2 4 6 6 8 9 12 15 149 156
这个题我们可以通过遍历先找出第一个比插入的数大的数的下标,然后从下标开始的数都向后移动一位,从最后一个数开始,到下标的数结束,再把插入的数字作为这个下标的数。
void fun(int a[N],int number){
int i,j;
for( i=0;i<N;i++){
if(number<=a[i]){
break;
}
}
for(j=N-2;j>=i;j--){
a[j+1]=a[j];
}
a[i]=number;
}