编写一个算法,将两个有序线性表合并成一个有序线性表。用数据结构
时间: 2024-09-24 13:07:38 浏览: 55
当需要将两个已排序的线性表合并成一个新的、按升序排列的线性表时,可以采用双指针法。这是一种简单而直观的方法,步骤如下:
1. 初始化两个指针,分别指向第一个线性表的头部(headA)和第二个线性表的头部(headB),以及一个新的空线性表(result)。
2. 创建一个临时存储节点的变量(temp),用于临时存放正在合并的较小元素。
3. 当两个指针都未到达各自线性表的末尾时,比较当前两个指针所指向的节点值:
- 如果头A的值小于头B的值,将头A的节点添加到结果列表,并将头A向后移动一位;
- 否则,将头B的节点添加到结果列表,并将头B向后移动一位。
4. 继续这个过程,直到其中一个线性表的指针达到其结尾。然后将另一个线性表剩余部分的节点依次添加到结果列表。
5. 最后,将结果列表的所有节点连接起来,就得到了合并后的有序线性表。
Python伪代码示例:
```python
def merge_sorted_lists(listA, listB):
result = []
pointerA = pointerB = 0
while pointerA < len(listA) and pointerB < len(listB):
if listA[pointerA] <= listB[pointerB]:
result.append(listA[pointerA])
pointerA += 1
else:
result.append(listB[pointerB])
pointerB += 1
# 添加剩余部分,如果有的话
result.extend(listA[pointerA:])
result.extend(listB[pointerB:])
return result
# 示例:
listA = [1, 3, 5]
listB = [2, 4, 6]
merged_list = merge_sorted_lists(listA, listB)
```
阅读全文