heapy() :python自带的堆排序
一、堆
1.最小堆 【Python heapq模块】
heap为定义堆,item增加的元素 heapq.heappush(heap,item)
>>> import heapq
>>> h = []
>>> heapq.heappush(h,2)
>>> h
[2]
将列表转换为堆 heapq.heapify(list)
>>> list = [1,2,3,5,1,5,8,9,6]
>>> heapq.heapify(list)
>>> list
[1, 1, 3, 5, 2, 5, 8, 9, 6]
删除最小值,因为堆的特征是heap[0]永远是最小的元素,所以一般都是删除第一个元素 heapq.heappop(heap)
>>> list
[1, 1, 3, 5, 2, 5, 8, 9, 6]
>>> heapq.heappop(list)
1
>>> list
[1, 2, 3, 5, 6, 5, 8, 9]
删除最小元素值,添加新的元素值 heapq.heapreplace(heap.item)
>>> list
[1, 2, 3, 5, 6, 5, 8, 9]
>>> heapq.heapreplace(list,99)
1
>>> list
[2, 5, 3, 9, 6, 5, 8, 99]
首先判断添加元素值与堆的第一个元素值对比,如果大,则删除第一个元素,然后添加新的元素值,否则不更改堆 heapq.heapreplace(heap,item)
>>> list
[2, 5, 3, 9, 6, 5, 8, 99]
>>> heapq.heappushpop(list,6)
2
>>> list
[3, 5, 5, 9, 6, 6, 8, 99]
>>> heapq.heappushpop(list,1)
1
>>> list
[3, 5, 5, 9, 6, 6, 8, 99]
将多个堆合并 heapq.merge(…)
>>> list
[3, 5, 5, 9, 6, 6, 8, 99]
>>> h
[1000]
>>> for i in heapq.merge(h,list):
... print(i,end=" ")
...
3 5 5 9 6 6 8 99 1000
查询堆中的最大元素,n表示查询元素个数 heapq.nlargest(n,heap)
>>> list
[3, 5, 5, 9, 6, 6, 8, 99]
>>> heapq.nlargest(3,list)
[99, 9, 8]
>>>
查询堆中的最小元素,n表示查询元素的个数 heapq.nsmallest(n,heap)
>>> list
[3, 5, 5, 9, 6, 6, 8, 99]
>>> heapq.nsmallest(3,list)
[3, 5, 5]
2.最大堆
用heapy建立大顶堆:将数据以相反数的形式存入堆,再以相反数的形式取出
push(e) --->>> push(-e)
pop(e) --->>> pop(-e)
参考文献:
heapy() :python自带的堆排序的更多相关文章
- ubuntu14.04 python自带版本升级
ubuntu14.04 python自带版本升级 sudo add-apt-repository ppa:fkrull/deadsnakes-python2. sudo apt-get update ...
- paip.性能跟踪profile原理与架构与本质-- python扫带java php
paip.性能跟踪profile原理与架构与本质-- python扫带java php ##背景 弄个个输入法音标转换atiEnPH工具,老是python性能不的上K,7k记录浏览过k要30分钟了. ...
- (四)python自带解释器(LDIE)的使用
什么是IDE? Integrated Development Environment(集成开发环境) 打个不恰当的比方,如果说写代码是制作一件工艺品,那IDE就是机床.再打个不恰当的比方,PS就是图片 ...
- python自带库及第三方库api察看
今天发现一个很有意思的功能,python自带了所有库的文档查看器,配置如下: 配置pydoc服务,cmd中输入如下代码: python –m pydoc –p 1234 回车后 ,使用过程中,该窗口不 ...
- python自带的web服务器
python自带的web服务器 python自带的包可以建立简单的web服务器 BaseHTTPServer 提供基本的web服务和处理类 SimpleHTTPServer 包含执行get请求的Sim ...
- [转]关于python中带下划线的变量和函数的意义
Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...
- 【Python】【BugList12】python自带IDLE执行print(req.text)报错:UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 93204-93204
[代码] # -*- coding:UTF-8 -*- import requests if __name__ == '__main__': target = 'https://unsplash.co ...
- Python基础(七) python自带的三个装饰器
说到装饰器,就不得不说python自带的三个装饰器: 1.@property 将某函数,做为属性使用 @property 修饰,就是将方法,变成一个属性来使用. class A(): @prope ...
- python自带的进程池及线程池
进程池 """ python自带的进程池 """ from multiprocessing import Pool from time im ...
随机推荐
- ipv6禁用导致rpcbind服务启动失败解决办法
参考文档:http://blog.51cto.com/hld1992/2055028
- css学习_css复合选择器
css复合选择器 a.交集选择器 (即...又...:选择器之间不能有空格) p.one{color:red;] b.并集选择器(中间由逗号隔开) p,div{color:red;} c.后代选择器 ...
- ROS rosrun 调用 sudo 命令
https://blog.csdn.net/qq_16775293/article/details/81138904
- 为何串口dma发送数据可能不完整
串口dma数据发送不完整, 1. 通过打印log说明数据合成,送给dma buff都是正常的. 2. 数据通过硬件串口直接配置,是正常的 3. 数据通过单片机dma转发后数据异常,通过检查发现 dma ...
- CCPC-Wannafly Winter Camp Day4 Div1 - 咆咆咆哮 - [三分+贪心]
题目链接:https://zhixincode.com/contest/18/problem/I?problem_id=267 题目描述 输入描述 输出描述 一行一个整数表示答案. 样例输入 1 32 ...
- CodeForces 1056E - Check Transcription - [字符串hash]
题目链接:https://codeforces.com/problemset/problem/1056/E One of Arkady's friends works at a huge radio ...
- TensorRT优化过程中的dropout问题
使用tensorRT之前,你一定要注意你的网络结构是否能够得到trt的支持,无论是CNN还是RNN都会有trt的操作. 例如:tf.nn.dropout(features, keep_prob),tr ...
- 安装arcgis10.5不能启动服务的解决方案
最近由于公司需要,要装arcgis10.5,但是装这软件就费了好久的功夫.以前用的10.2,安装比较简单,但是10.5看起来就不一样了,下载完成后就会发现多了一个破解文件.按照教程一步一步安装的,但是 ...
- [dpdk] dpdk编译成动态库使用 -- PCI port自动发现与pmd动态加载
1. 修改配置文件 .conf, 设置如下变量的值. [root@D129 x86_64-native-linuxapp-gcc]# cat dpdk/x86_64-native-linuxapp- ...
- /etc/passwd- 和/etc/shadow-文件
今天偶尔看到系统里有/etc/passwd- 和/etc/shadow-文件,经测试只要执行过系统的用户操作命令就会产生,如deluser.passwd.chpasswd.adduser等命令,应该是 ...