已知顺序表L中的元素递增有序排列,设计算法将元素x插入到表L中并保持表L仍递增有序。C函数
时间: 2024-10-17 20:08:45 浏览: 50
已知单链表L为按值递增有序的,编写算法将数据元素e插入到顺序表L中,使之仍有序
5星 · 资源好评率100%
要在已知递增有序的顺序表L中插入元素x,并保持其递增排序,可以使用二分查找法找到合适的位置,然后插入新元素。以下是C语言的一个简单示例:
```c
#include <stdio.h>
// 插入函数
void insert(int arr[], int n, int x) {
int low = 0, high = n - 1;
while (low <= high) {
int mid = (low + high) / 2;
// 如果x小于中间元素,则在左半部分继续查找
if (arr[mid] > x)
high = mid - 1;
// 如果x大于中间元素,则在右半部分继续查找
else if (arr[mid] < x)
low = mid + 1;
// 找到适当位置,直接插入
else
break; // x已经等于中间元素,无需插入
}
// 将x插入到低索引处
arr[low] = x;
}
// 测试
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 4;
printf("Original array:\n");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
insert(arr, n, x);
printf("\nAfter inserting %d:\n", x);
for (int i = 0; i < n + 1; i++)
printf("%d ", arr[i]);
return 0;
}
```
当运行这个程序,你会看到`x`被插入到了正确的位置,数组保持递增有序。
阅读全文