有一个已排好序的数组{1,4,6,9,13,16,19,28,40,100},要求输入一个数后,按原来排序的规律将它插入数组中。c语言
时间: 2024-11-26 14:02:02 浏览: 3
在 C 语言中,你可以通过二分查找法找到目标值应该插入的位置,保持数组的有序性。以下是基本步骤:
1. 定义一个函数 `insert_sorted`,接受两个参数:已排序的整数数组 `arr`、数组长度 `n` 和需要插入的值 `num`。
```c
#include <stdio.h>
// 二分查找函数,返回插入位置
int binary_search(int arr[], int low, int high, int num) {
if (high >= low) {
int mid = low + (high - low) / 2;
// 如果中间元素大于目标值,搜索左半部分
if (arr[mid] > num)
return binary_search(arr, low, mid - 1, num);
// 如果中间元素小于目标值,搜索右半部分
else if (arr[mid] < num)
return mid; // 返回中间位置,因为已经排序,所以是正确位置
// 如果中间元素等于目标值,无需插入,直接返回索引
else
return mid;
}
// 如果没有找到合适的位置,插入在最后
return high;
}
void insert_sorted(int arr[], int n, int num) {
int index = binary_search(arr, 0, n - 1, num);
arr[index] = num; // 插入值到找到的位置
printf("Inserted %d at position %d\n", num, index + 1); // 输出插入结果
}
int main() {
int arr[] = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100};
int n = sizeof(arr) / sizeof(arr[0]);
int num = 25; // 示例输入值
insert_sorted(arr, n, num);
return 0;
}
```
在这个例子中,`main()` 函数里,我们首先计算数组 `arr` 的长度,然后调用 `insert_sorted` 函数插入指定值 `num`。二分查找会确定正确的插入位置,使得数组仍然有序。
阅读全文