给定两个已排序的数组,任务是以排序的方式合并它们。
例子:
Input : arr1 = [1, 3, 4, 5]
arr2 = [2, 4, 6, 8]
Output : arr3 = [1, 2, 3, 4, 4, 5, 6, 8]
Input : arr1 = [5, 8, 9]
arr2 = [4, 7, 8]
Output : arr3 = [4, 5, 7, 8, 8, 9]
此问题已有解决方案,请参阅合并两个已排序数组链接。我们将在Python使用heapq.merge()在一行代码中解决这个问题。
# Function to merge two sorted arrays
from heapq import merge
def mergeArray(arr1,arr2):
return list(merge(arr1, arr2))
# Driver function
if __name__ == "__main__":
arr1 = [1,3,4,5]
arr2 = [2,4,6,8]
print (mergeArray(arr1, arr2))
输出:
[1, 2, 3, 4, 4, 5, 6, 8]
heapq 模块的属性?
该模块提供了堆队列算法的实现,也称为优先队列算法。
要创建堆,请使用初始化为 [] 的列表,或者您可以通过函数heapify() 将填充列表转换为堆。提供以下函数:
- heapq.heappush(heap,item) :将值项推送到堆上,保持堆不变。
- heapq.heappop(heap) :从堆中弹出并返回最小的项,保持堆不变。如果堆为空,则引发IndexError 。要访问最小的项目而不弹出它,请使用 heap[0]。
- heapq.heappushpop(heap, item) :将item 推入堆,然后从堆中弹出并返回最小的 item。组合操作比 heappush() 更有效地运行,然后单独调用 heappop()。
- heapq.heapify(x) :在线性时间内将列表 x 就地转换为堆。
- heapq.merge(*iterables) :将多个排序的输入合并为一个排序的输出(例如,合并来自多个日志文件的带时间戳的条目)。返回排序值的迭代器。
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。