有一个已经排好序的数组,要求输入一个数后,按照原来排序的规律将它插入,用c语言
时间: 2025-03-23 13:12:03 浏览: 68
要在已排序的数组中插入一个新的数字并保持原有的顺序,可以用C语言实现一个简单的线性查找算法。以下是详细步骤及代码:
### 步骤说明:
1. 定义原始数组及其大小;
2. 找到新元素应当插入的位置——遍历数组直到找到比目标值大的第一个位置;
3. 将插入点之后的所有元素向右移动一位;
4. 把新的数值放置在腾出来的空位上。
### 示例程序:
```c
#include <stdio.h>
#define MAX_SIZE 50
void insertSorted(int arr[], int *n, int key){
int i,j;
// 查找合适位置i,使得arr[i]>key且arr[i-1]<=key
for(i=0;i<*n && arr[i]<key;i++);
if(*n >=MAX_SIZE ){
printf("Array overflow\n");
return ;
}
// 移动元素为新元素让出空间
for(j=*n; j>i ;j--){
arr[j]=arr[j-1];
}
// 插入键值
arr[i] = key;
(*n)++;
}
// 显示功能
void showArr(const int A[],const int len){
int k;
for(k=0;k<len;k++)printf("%d ",A[k]);
puts("");
}
int main(void){
int array[MAX_SIZE]={1,3,7,9},size=4,newElement;
printf("Original Array:\t ");
showArr(array,size);
scanf("%d",&newElement);
printf("\nEnter the number to be inserted :%d \n", newElement );
insertSorted(array,&size ,newElement );
printf("After Insertion :\t ");
showArr(array,size);
return 0;
}
```
在这个例子当中我们首先定义了一个宏`#define MAX_SIZE 50`表示最大能够容纳多少个整数,默认情况下只填充了一部分(`{1,3,7,9}`),然后通过调用函数insertSorted()把用户提供的数据添加进去了。最后再打印出来看看效果如何。
阅读全文
相关推荐

















