C语言有n(n<=100)个整数,已经按照从大到小顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序。用时小于400ms
时间: 2024-04-08 10:34:43 浏览: 50
可以使用二分查找的方法来实现在有序数组中插入一个元素并保持有序性。以下是一个使用C语言的示例代码:
```c
#include <stdio.h>
void insert(int arr[], int n, int m) {
int left = 0, right = n - 1;
int insert_pos = -1;
// 使用二分查找找到插入位置
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == m) {
insert_pos = mid;
break;
} else if (arr[mid] < m) {
right = mid - 1;
} else {
left = mid + 1;
insert_pos = mid;
}
}
// 在插入位置后的元素后移
for (int i = n - 1; i > insert_pos; i--) {
arr[i] = arr[i - 1];
}
// 插入新元素
arr[insert_pos] = m;
}
int main() {
int n, m;
int arr[100];
// 输入已排序的数组
printf("请输入已排序数组的长度n(n <= 100):");
scanf("%d", &n);
printf("请输入已排序数组的元素(从大到小顺序):");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 输入待插入的元素
printf("请输入待插入的整数m:");
scanf("%d", &m);
// 插入并保持有序
insert(arr, n, m);
n++;
// 输出新序列
printf("插入后的有序序列为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这段代码首先使用二分查找法找到待插入的位置,然后将插入位置之后的元素依次后移,最后在插入位置处插入新的元素。请注意,这里假设已排序数组中没有重复元素。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)