Python heapq 详解

Python有一个内置的模块,heapq标准的封装了最小堆的算法实现。下面看两个不错的应用。
小顶堆(求TopK大)
话说需求是这样的: 定长的序列,求出TopK大的数据。
import heapq
import random
class TopkHeap(object):
def __init__(self, k):
self.k = k
self.data = []
def Push(self, elem):
if len(self.data) < self.k:
heapq.heappush(self.data, elem)
else:
topk_small = self.data[0]
if elem > topk_small:
heapq.heapreplace(self.data, elem)
def TopK(self):
return [x for x in reversed([heapq.heappop(self.data) for x in xrange(len(self.data))])]
if __name__ == "__main__":
print "Hello"
list_rand = random.sample(xrange(1000000), 100)
th = TopkHeap(3)
for i in list_rand:
th.Push(i)
print th.TopK()
print sorted(list_rand, reverse=True)[0:3]
大顶堆(求BtmK小)
这次的需求变得更加的困难了:给出N长的序列,求出BtmK小的元素,即使用大顶堆。
算法实现的核心思路是:将push(e)改为push(-e)、pop(e)改为-pop(e)。
class BtmkHeap(object):
def __init__(self, k):
self.k = k
self.data = []
def Push(self, elem):
# Reverse elem to convert to max-heap
elem = -elem
# Using heap algorighem
if len(self.data) < self.k:
heapq.heappush(self.data, elem)
else:
topk_small = self.data[0]
if elem > topk_small:
heapq.heapreplace(self.data, elem)
def BtmK(self):
return sorted([-x for x in self.data])
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Python
# heapq
# 详解
# heapq妙用
# heapq如何使用
# Python heapq库案例详解
# 详解python之heapq模块及排序操作
# Python利用heapq实现一个优先级队列的方法
# Python中的heapq模块源码详析
# 详解Python中heapq模块的用法
# python中heapq堆排算法的实现
# 求出
# 定长
# 是这样
# 希望能
# 谢谢大家
# 装了
# 变得更加
# 有一个
# random
# TopkHeap
# object
# def
# len
# lt
# heappush
# data
# Push
# elem
# 小顶堆
相关文章:
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
如何在阿里云通过域名搭建网站?
建站之星收费标准详解:套餐费用及年费价格表一览
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
定制建站是什么?如何实现个性化需求?
宝塔新建站点报错如何解决?
如何在宝塔面板中修改默认建站目录?
如何在IIS中配置站点IP、端口及主机头?
长沙企业网站制作哪家好,长沙水业集团官方网站?
网站制作的步骤包括,正确网址格式怎么写?
如何在阿里云服务器自主搭建网站?
如何在万网主机上快速搭建网站?
详解jQuery中基本的动画方法
如何通过.red域名打造高辨识度品牌网站?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何在建站宝盒中设置产品搜索功能?
如何配置FTP站点权限与安全设置?
如何通过商城自助建站源码实现零基础高效建站?
建站主机空间推荐 高性价比配置与快速部署方案解析
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何快速打造个性化非模板自助建站?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
Python路径拼接规范_跨平台处理说明【指导】
北京网站制作公司哪家好一点,北京租房网站有哪些?
制作公司内部网站有哪些,内网如何建网站?
如何用PHP工具快速搭建高效网站?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
广州营销型建站服务商推荐:技术优势与SEO优化解析
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
教程网站设计制作软件,怎么创建自己的一个网站?
建站之星图片链接生成指南:自助建站与智能设计教程
无锡营销型网站制作公司,无锡网选车牌流程?
如何快速生成ASP一键建站模板并优化安全性?
如何零基础在云服务器搭建WordPress站点?
宝塔建站助手安装配置与建站模板使用全流程解析
如何选择域名并搭建高效网站?
智能起名网站制作软件有哪些,制作logo的软件?
如何配置WinSCP新建站点的密钥验证步骤?
网站微信制作软件,如何制作微信链接?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
如何挑选最适合建站的高性能VPS主机?
微课制作网站有哪些,微课网怎么进?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
建站之星如何快速解决建站难题?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何高效完成独享虚拟主机建站?
*请认真填写需求信息,我们会在24小时内与您取得联系。