已知一个升序的一维整型数组,插入一个数后保持为原序C语言
时间: 2024-11-13 19:21:56 浏览: 1
关于C++信息学竞赛一维数组及其应用52个源文件及试题
在C语言中,如果你想在一个已排序的升序一维整型数组中插入一个新元素并保持有序,可以使用二分查找法来确定插入的位置,然后将后面的元素向右移动一位。这里是一个简单的示例:
```c
#include <stdio.h>
// 插入函数,arr[]是已排序数组,val是需要插入的值
void insert(int arr[], int n, int val) {
int low = 0;
int high = n - 1;
// 使用二分查找找到合适位置
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] > val)
high = mid - 1; // 如果中间元素大于val,应在左半部分查找
else
low = mid + 1; // 否则,在右半部分查找
}
// 将元素移动到正确位置
for (int i = n - 1; i >= high + 1; i--) {
arr[i + 1] = arr[i];
}
arr[high + 1] = val; // 插入新值
}
// 测试函数
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int val = 4;
insert(arr, n, val);
printf("插入 %d 后的数组为:", val);
for (int i = 0; i <= n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
运行这个程序后,`arr`数组将会是`{1, 3, 4, 5, 7, 9}`。
阅读全文