二、试编写出将两个顺序存储的有序表A和B合成一个有序表C的算法。 A 1 4 6 7 9 B 2 3 8 11 C 1 2 3 4 6 7 8 9 11
时间: 2023-12-06 18:44:48 浏览: 38
算法如下:
1. 定义三个变量i、j、k,分别指向A、B、C中的元素。
2. while循环,当i和j都没有越界时,执行以下操作:
- 如果A[i] < B[j],将A[i]放入C[k]中,i和k分别加1;
- 如果A[i] >= B[j],将B[j]放入C[k]中,j和k分别加1;
3. 如果A中还有剩余元素,将剩余元素全部放入C中;
4. 如果B中还有剩余元素,将剩余元素全部放入C中;
5. 返回合并后的有序表C。
代码如下:
```python
def merge_sorted_lists(A, B):
m, n = len(A), len(B)
C = [0] * (m + n)
i, j, k = 0, 0, 0
while i < m and j < n:
if A[i] < B[j]:
C[k] = A[i]
i += 1
else:
C[k] = B[j]
j += 1
k += 1
while i < m:
C[k] = A[i]
i += 1
k += 1
while j < n:
C[k] = B[j]
j += 1
k += 1
return C
A = [1, 4, 6, 7, 9]
B = [2, 3, 8, 11]
C = merge_sorted_lists(A, B)
print(C) # [1, 2, 3, 4, 6, 7, 8, 9, 11]
```
阅读全文