数组且各元素值递增有序。试写一算法,将新元素x插入到数组的适当位置,使得数组中元素仍保持递增有序。C语言
时间: 2023-04-09 07:01:49 浏览: 108
数据结构与算法c++实现 两个顺序表的元素严格单调递增,将其共同元素保存到新顺序表中,且为递增排序
5星 · 资源好评率100%
可以使用二分查找的思想来解决这个问题。具体步骤如下:
1. 定义一个变量pos表示新元素x应该插入的位置,初始值为0。
2. 使用二分查找的方法,在数组中找到第一个大于等于x的元素的位置,将其赋值给pos。
3. 将数组中pos及其后面的元素都向后移动一个位置,腾出pos的位置。
4. 将新元素x插入到pos的位置。
下面是C语言的实现代码:
void insert(int arr[], int n, int x) {
int pos = 0;
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] >= x) {
pos = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
for (int i = n - 1; i >= pos; i--) {
arr[i + 1] = arr[i];
}
arr[pos] = x;
}
阅读全文