c语言编写有一个已排好序的数组,要求输入一个数后,按从大到小的规律将它插入到数组中。
时间: 2023-11-05 13:58:55 浏览: 59
数组排序,用C 实现-Sorting an array using C to achieve
好的,这是一道关于C语言数组的问题,可以回答。为了将一个数插入已排好序的数组中,我们可以使用二分查找来找到该数应该插入的位置,然后将其插入到数组中。以下是一个示例代码 (仅供参考):
```
#include <stdio.h>
int binarySearch(int arr[], int n, int x) {
int low = 0, high = n - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (x == arr[mid]) return mid;
else if (x < arr[mid]) high = mid - 1;
else low = mid + 1;
}
return low;
}
void insertInArray(int arr[], int n, int x) {
int i, j;
j = binarySearch(arr, n, x);
for (i = n - 1; i >= j; i--) {
arr[i + 1] = arr[i];
}
arr[j] = x;
}
int main() {
int arr[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int n = 10, i, x;
printf("原始数组:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n请输入要插入的数:");
scanf("%d", &x);
insertInArray(arr, n, x);
printf("插入后的数组:");
for (i = 0; i < n + 1; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
当然,以上只是一个简单的示例代码,实际应用中还需要考虑更多的情况和异常处理。
阅读全文