用c语言写一段程序,用scanf函数,输入一个一维数组,先对其进行降序排列,之后再用scanf函数输入一个数后,按照原来的排序规律,将其插入至数组中
时间: 2024-12-04 16:26:18 浏览: 13
在C语言中,你可以使用冒泡排序算法对一维数组进行降序排列,然后再用二分查找法找到合适的位置插入新数。这里是一个简单的示例:
```c
#include <stdio.h>
// 冒泡降序排序函数
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] < arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 二分查找函数
int binarySearch(int arr[], int low, int high, int target) {
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target)
return mid;
if (arr[mid] < target)
low = mid + 1;
else
high = mid - 1;
}
// 如果未找到目标,则返回插入位置
return low;
}
int main() {
int n;
printf("请输入一维数组的长度: ");
scanf("%d", &n);
int arr[n];
printf("请输入一维数组的元素: ");
for (int i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
}
bubbleSort(arr, n); // 对数组进行降序排序
int num;
printf("请输入一个数进行插入: ");
scanf("%d", &num);
int insertIndex = binarySearch(arr, 0, n - 1, num);
arr[insertIndex] = num; // 插入新数
printf("插入后的数组: ");
for (int i = 0; i < n + 1; ++i) {
printf("%d ", arr[i]); // 包含新数
}
printf("\n");
return 0;
}
阅读全文