有一个已排好序的数组{1,4,6,9,13,16,19,28,40,100},要求输入一个数后,按原来排序的规律将它插入数组中。C语言编程
时间: 2024-11-10 10:26:18 浏览: 61
在C语言中,我们可以采用二分查找法来确定插入位置,然后按照数组原有的有序顺序插入新的元素。这里是一个简单的示例程序:
```c
#include <stdio.h>
// 二分查找函数,返回给定值应该插入的位置
int binary_search(int arr[], int n, int target) {
int low = 0;
int high = n - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == target)
return mid; // 如果找到目标值,直接返回
else if (arr[mid] < target)
low = mid + 1; // 目标值大于中间值,搜索右半部分
else
high = mid - 1; // 目标值小于中间值,搜索左半部分
}
return low; // 找不到目标值,返回最接近的下标
}
// 插入函数
void insert_sorted(int arr[], int n, int value) {
int pos = binary_search(arr, n, value);
// 将数组元素向后移动一位,然后插入新元素
for (int i = n - 1; i >= pos; i--) {
arr[i + 1] = arr[i];
}
arr[pos] = value; // 插入新元素到正确位置
}
// 测试函数
int main() {
int arr[] = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100};
int n = sizeof(arr) / sizeof(arr[0]);
int value = 25; // 示例输入的数字
printf("Original array:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
insert_sorted(arr, n, value);
printf("\nArray after insertion of %d:\n", value);
for (int i = 0; i <= n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序首先通过`binary_search`函数找到给定值应该插入的位置,然后利用`insert_sorted`函数将新元素插入到适当位置。注意,`main`函数中的`value`是你想要插入的具体数值,你可以根据需要更改。
阅读全文