假设以两个元素依值递增有序排列的线性表 分别表示两个集合(即 同一表中的元素值各不相同),现要求另辟空间构成一个线性表 ,其元素为 中元 素的交集,且表 中的元素也依值递增有序排列。试对顺序表编写求 的算法。
时间: 2023-06-01 08:02:47 浏览: 105
已知有两个按元素值递增有序的顺序表A和B,设计一个算法将表A和表B的全部元素归并为一个按元素值递增有序的顺序表C。
5星 · 资源好评率100%
算法步骤如下:
1. 初始化三个指针,分别指向两个输入有序表和输出有序表的起始位置。
2. 循环比较两个输入有序表的元素大小,将相等的元素存入输出有序表中,并同时移动三个指针。
3. 如果一个有序表中的元素已经全部比较完了,则退出循环。
4. 返回输出有序表。
以下是算法的Python代码实现:
```python
def intersection(lst1, lst2):
i, j, k = 0, 0, 0
n1, n2 = len(lst1), len(lst2)
lst3 = [0] * (n1 + n2)
while i < n1 and j < n2:
if lst1[i] < lst2[j]:
i += 1
elif lst1[i] > lst2[j]:
j += 1
else:
lst3[k] = lst1[i]
i += 1
j += 1
k += 1
return lst3[:k]
```
其中,lst1和lst2分别表示两个输入的有序表,lst3为输出的有序表,k表示输出有序表的当前位置。函数返回lst3的前k个元素,即交集部分。
阅读全文