有一个已经排好序的数组(降序)。现输入一个数,要求按原来的规律将它插入数组中。
时间: 2025-06-14 16:17:05 浏览: 9
要按照给定的降序排列插入一个新元素到已排序数组中,首先你需要比较这个新元素与数组中的最后一个元素。如果新元素大于或等于这个最大元素,那么就直接将其添加到数组的末尾;否则,从后向前遍历数组,找到第一个小于新元素的位置,然后将所有大于新元素的元素依次后移一位。
以下是C语言的一个简单示例,假设我们有一个名为`sortedArray`的整型数组,`insertValue`是要插入的新值:
```c
#include <stdio.h>
// 假设 sortedArray 已经按照降序排序
int* insertIntoSortedDesc(int *array, int length, int insertValue) {
if (length == 0 || insertValue >= array[length - 1]) {
// 如果数组为空或者新值大于或等于最大值,直接在末尾添加
array[length] = insertValue;
return array + length; // 返回新的数组起始位置
} else {
int i = length - 1; // 从后向前遍历
while (i > 0 && array[i] > insertValue) { // 找到第一个小于新值的位置
array[i + 1] = array[i]; // 后移元素
i--;
}
array[i + 1] = insertValue; // 插入新值
return array; // 返回原数组指针,因为不需要移动,所以仍然是原数组
}
}
int main() {
int sortedArray[] = {10, 8, 6, 4, 2}; // 示例数组
int length = sizeof(sortedArray) / sizeof(sortedArray[0]);
int insertValue = 5; // 要插入的值
int *newArray = insertIntoSortedDesc(sortedArray, length, insertValue);
printf("插入后数组: ");
for (int i = 0; i < length + 1; i++) {
printf("%d ", newArray[i]);
}
free(newArray); // 不要忘记释放动态分配的空间
return 0;
}
```
运行此程序,你会看到新元素被正确地插入到了适当的位置,保持了原有的降序排列。
阅读全文
相关推荐



















