c语言全代码实现已有一个已排好序的数组,要求输入一个数后,按原来排序的规则将它插入数组中
时间: 2024-12-20 16:22:15 浏览: 11
在C语言中,你可以使用二分查找法来确定新元素应该插入到已排序数组的位置,然后根据数组的升序特性插入新数。以下是这个过程的一个简单实现:
```c
#include <stdio.h>
// 二分查找函数
int binary_search(int arr[], int n, int key) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
// 如果key大于中间元素,则在右半部分继续查找
if (arr[mid] < key)
left = mid + 1;
// 否则,在左半部分查找
else
right = mid - 1;
}
return left; // 返回新元素应插入的位置
}
// 插入函数
void insert_sorted(int arr[], int n, int key) {
int index = binary_search(arr, n, key);
memmove(&arr[index + 1], &arr[index], (n - index) * sizeof(int)); // 移动元素
arr[index] = key; // 插入新元素
}
// 测试函数
void print_array(int arr[], int n) {
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
}
int main() {
int arr[] = {1, 3, 5, 7, 9}; // 已排序数组示例
int n = sizeof(arr) / sizeof(arr[0]);
int key; // 用户输入的新数
printf("Enter the number to be inserted: ");
scanf("%d", &key);
insert_sorted(arr, n, key); // 插入新数
print_array(arr, n); // 输出插入后的数组
return 0;
}
```
在这个程序中,`binary_search`函数找到新元素应插入的位置,`insert_sorted`函数负责移动元素并插入新数,最后`main`函数用于接收用户输入并显示结果。
阅读全文