3、有两个递增有序的整数顺序表A、B,设计一个算法将他们中全部元素放到顺序表C中,要求C中元素是递减有序的,并进行测试。
时间: 2024-03-25 07:36:49 浏览: 58
数据结构与算法c++实现 两个顺序表的元素严格单调递增,将其共同元素保存到新顺序表中,且为递增排序
5星 · 资源好评率100%
算法思路:
1. 定义三个指针,分别指向A、B、C的末尾元素;
2. 比较A、B末尾元素的大小,将较大的元素放到C的末尾;
3. 将指向较大元素的指针向前移动一位;
4. 重复步骤2、3直到A、B中有一个为空;
5. 将另一个非空的表中的剩余元素依次放到C的前面。
算法实现:
```python
def merge_array(A, B):
i = len(A)-1
j = len(B)-1
C = [0]*(len(A)+len(B))
k = len(C)-1
while i >= 0 and j >= 0:
if A[i] >= B[j]:
C[k] = A[i]
i -= 1
else:
C[k] = B[j]
j -= 1
k -= 1
while i >= 0:
C[k] = A[i]
i -= 1
k -= 1
while j >= 0:
C[k] = B[j]
j -= 1
k -= 1
return C
```
测试:
```python
A = [1, 3, 5, 7, 9]
B = [2, 4, 6, 8, 10]
C = merge_array(A, B)
print(C) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
```
算法正确。
阅读全文