Python heapq模块 (堆)

    这个模块实现了堆的数据结构。参考(浅析Python heapq模块 堆数据结构

    堆是一种特殊的树形数据结构,每个节点都有一个值,通常我们所说的堆的数据结构指的是 二叉树

    堆的特点是 根节点的值最大(或者最小),而且根节点的两个孩子也能与孩子节点组成子树。堆分为两种,大根堆和小根堆(前提是二叉堆都可以看成一颗完全二叉树)。如下图所示:

    

    Python heapq模块 
    在python中,也对堆这种数据结构进行了模块化,我们可以通过调用heapq模块来建立堆这种数据结构,同时heap模块也提供了相应的方法来对堆做操作。
    heapq模块提供了以下方法:(引用自:Python heapq模块

     heapq.heappush(heap, item) 把item添加到heap中(heap是一个列表)

    heapq.heappop(heap) 把堆顶元素弹出,返回的就是堆顶

    heapq.heappushpop(heap, item) 先把item加入到堆中,然后再pop,比heappush()再heappop()要快得多

    heapq.heapreplace(heap, item) 先pop,然后再把item加入到堆中,比heappop()再heappush()要快得多

    heapq.heapify(x) 将列表x进行堆调整,默认的是小顶堆

    heapq.merge(*iterables) 将多个列表合并,并进行堆调整,返回的是合并后的列表的迭代器

    heapq.nlargest(n, iterable, key=None) 返回最大的n个元素(Top-K问题)

    heapq.nsmallest(n, iterable, key=None) 返回最小的n个元素(Top-K问题)

   

    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值