将两个有序的线性表合并成一个有序的线性表C++语言编程
时间: 2023-09-13 19:07:29 浏览: 106
可以使用归并排序的思想来合并两个有序的线性表。
具体步骤如下:
1. 定义三个变量:i、j、k,分别表示两个有序线性表和合并后的有序线性表的下标。
2. 遍历两个有序线性表,比较它们的元素大小,将较小的元素放入合并后的有序线性表中。同时将下标向后移动一位。
3. 如果有一个线性表已经遍历完了,那么将另一个线性表中剩余的元素全部放入合并后的有序线性表中。
4. 返回合并后的有序线性表。
下面是C语言代码实现:
```
#include <stdio.h>
void merge(int arr1[], int n1, int arr2[], int n2, int result[]) {
int i = 0, j = 0, k = 0;
while (i < n1 && j < n2) {
if (arr1[i] < arr2[j]) {
result[k++] = arr1[i++];
} else {
result[k++] = arr2[j++];
}
}
while (i < n1) {
result[k++] = arr1[i++];
}
while (j < n2) {
result[k++] = arr2[j++];
}
}
int main() {
int arr1[] = {1, 3, 5, 7, 9};
int arr2[] = {2, 4, 6, 8, 10};
int result[10];
merge(arr1, 5, arr2, 5, result);
for (int i = 0; i < 10; i++) {
printf("%d ", result[i]);
}
return 0;
}
```
在这个例子中,我们将两个长度为5的有序线性表合并成一个长度为10的有序线性表。最终输出结果为:1 2 3 4 5 6 7 8 9 10。
阅读全文