美文网首页
合并多个有序序列,再对整个有序序列进行迭代之heapq.merg

合并多个有序序列,再对整个有序序列进行迭代之heapq.merg

作者: panxd | 来源:发表于2017-07-02 11:24 被阅读0次

    <a href="https://docs.python.org/2/library/heapq.html">Heap queue algorithm-(heapq - 堆队列算法)官方链接</a>

    • 问题引入:
      • 一组有序序列,先合并产生一个新的有序序列,然后进行迭代。
    • 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.merg

          本文链接:https://www.haomeiwen.com/subject/dsencxtx.html