编写一个c语言,已有一个排好序的数组,今输入一个数,要求按原来排序的规律将他插入数组中
时间: 2024-12-23 15:26:38 浏览: 5
在C语言中,编写一个程序来实现这个功能,可以采用二分查找法找到合适的位置,然后将新元素插入到已排序数组中。以下是简单的步骤和代码示例:
```c
#include <stdio.h>
// 二分查找函数
int binary_search(int arr[], int size, int target) {
int low = 0;
int high = size - 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; // 目标值小于中间值,搜索左半部分
}
// 如果没找到目标值,插入位置在high+1(因为数组已经有序)
return high + 1;
}
// 插入函数
void insert_sorted(int arr[], int size, int value) {
int insertion_index = binary_search(arr, size, value);
memmove(&arr[insertion_index + 1], &arr[insertion_index], (size - insertion_index) * sizeof(int)); // 移动其他元素
arr[insertion_index] = value; // 插入新元素
}
// 测试
int main() {
int sorted_arr[] = {1, 2, 3, 4, 5};
int size = sizeof(sorted_arr) / sizeof(sorted_arr[0]);
int num_to_insert;
printf("Enter a number to be inserted in the sorted array: ");
scanf("%d", &num_to_insert);
insert_sorted(sorted_arr, size, num_to_insert);
printf("Sorted array with the new element inserted:\n");
for (int i = 0; i < size + 1; i++) {
printf("%d ", sorted_arr[i]);
}
printf("\n");
return 0;
}
```
在这个示例中,用户输入一个数,`binary_search`函数会查找它的正确位置,然后`insert_sorted`函数将新元素插入并保持数组排序。
阅读全文