用c语言编写出将两个顺序存储的有序表A:1,4,6,7,9和B:2,3,8,11合成一个有序表C:,1,2,3,4,5,6,7,8,9,11的算法。
时间: 2023-07-30 10:05:47 浏览: 111
用C语言实现的顺序表
可以使用归并排序的思想来合并两个有序表。
具体实现方法如下:
1. 定义三个指针i、j、k,分别指向表A、B、C中当前要合并的元素位置。
2. 比较A[i]和B[j]的大小,将较小的元素存入C[k]中,并将指向该元素的指针向后移动一位。
3. 重复步骤2,直到有一个表的元素全部存入C中。
4. 将剩余的元素依次存入C中。
完整的代码如下:
```c
#include <stdio.h>
#define MAXSIZE 100
void merge(int A[], int B[], int C[], int m, int n) {
int i = 0, j = 0, k = 0;
while (i < m && j < n) {
if (A[i] <= B[j]) {
C[k++] = A[i++];
} else {
C[k++] = B[j++];
}
}
while (i < m) {
C[k++] = A[i++];
}
while (j < n) {
C[k++] = B[j++];
}
}
int main() {
int A[] = {1, 4, 6, 7, 9};
int B[] = {2, 3, 8, 11};
int C[MAXSIZE];
int m = sizeof(A) / sizeof(int);
int n = sizeof(B) / sizeof(int);
merge(A, B, C, m, n);
for (int i = 0; i < m + n; i++) {
printf("%d ", C[i]);
}
return 0;
}
```
输出结果为:1 2 3 4 6 7 8 9 11。
阅读全文