使用heapq在Python中合并两个排序的数组

给定两个排序的数组,任务是以排序的方式合并它们。

null

例如:

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解决这个问题 希普。合并() 在一行代码中。

# 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()将填充的列表转换为堆。提供以下功能:

  • 希普。堆堆(堆,项): 将值项推送到堆上,保持堆不变。
  • 希普。堆(heap): 弹出并返回堆中最小的项,保持堆不变。如果堆是空的, 索引器 她长大了。要访问最小的项而不弹出它,请使用heap[0]。
  • 希普。heappushpop(堆,项): 将项推送到堆上,然后弹出并返回堆中最小的项。组合操作的运行效率比单独调用heappush()后的heappush()更高。
  • 希普。希皮菲(x): 在线性时间内就地将列表x转换为堆。
  • 希普。合并(*iterables): 将多个已排序的输入合并到单个已排序的输出中(例如,合并多个日志文件中带有时间戳的条目)。返回排序值的迭代器。

    本文由 沙申克·米什拉(古卢) .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

    如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享