合并多个有序序列,再对整个有序序列进行迭代之heapq.merge()方法

Heap queue algorithm-(heapq - 堆队列算法)官方链接

  • 问题引入:
    • 一组有序序列,先合并产生一个新的有序序列,然后进行迭代。
  • heapq.merge()函数引入,有关heapq其它方法如下:
    • heappop
    • heapreplace
    • heapify
    • heappush
    • nsmallest
    • nlargest
    • merge
    • heappushp
  • 实现方法
>>> import heapq
>>> a = [1, 4, 7, 10]
>>> b = [2, 5, 6, 11]
>>> for c in heapq.merge(a,b):
    print(c)

    
1
2
4
5
6
7
10
11
  • 如何理解heapq.merge
    • 1.heapq.merge()在迭代操作中,对所提供的序列并不会做一次性操作,可以处理非常长的序列,开销小。
    • 2.heapq.merge()方法使用的前提是要求所有的输入序列是有序的。
    • 3.heapq.merge()方法不会预先做排序操作。
    • 4.heapq.merge()方法不会验证输入序列是否满足要求。
    • 5.heapq.merge()方法会检查每个序列的第一个元素,进行比较,将最小的那个放入新的序列中,然后再从之前的每个序列中选择下一个相比较小的元素。重复此操作,直至生成一个完整的新序列。

你可能感兴趣的:(合并多个有序序列,再对整个有序序列进行迭代之heapq.merge()方法)