python创建堆的方法实例讲解
作者:小妮浅浅 时间:2022-11-20 05:20:49
1、说明
创建堆有两种基本方法:heappush() 和 heapify()。
当使用heappush()时,当新元素添加时,堆得顺序被保持了。
如果数据已经在内存中,则使用 heapify() 来更有效地重新排列列表中的元素。
2、实例
import heapq
from heapq_showtree import show_tree
from heapq_heapdata import data
heap = []
print('random :', data)
print()
for n in data:
print('add {:>3}:'.format(n))
heapq.heappush(heap, n)
show_tree(heap)
# output
# random : [19, 9, 4, 10, 11]
#
# add 19:
#
# 19
# ------------------------------------
#
# add 9:
#
# 9
# 19
# ------------------------------------
#
# add 4:
#
# 4
# 19 9
# ------------------------------------
#
# add 10:
#
# 4
# 10 9
# 19
# ------------------------------------
#
# add 11:
#
# 4
# 10 9
# 19 11
# ------------------------------------
知识点扩展:
创建最大(小)堆
二叉堆本质上是一种完全二叉树,存储方式并不是链式存储,而是顺序存储
堆操作:插入(叶子节点上调),删除(堆顶元素下沉)
堆创建:非叶子节点下沉(从最后一个非叶子节点开始)
最小堆:
最小堆任何一个父节点的值,都小于等于它左右孩子节点的值
创建过程:如果非叶子节点值大于其子节点,将其下沉
最大堆:
最大堆任何一个父节点的值,都大于等于它左右孩子节点的值。
创建过程:如果非叶子节点值小于其子节点,将其下沉
来源:https://www.py.cn/jishu/jichu/27955.html
标签:python,创建堆
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python使用multiprocessing创建进程的方法
2022-08-03 14:09:21
3个JS控制图片滚动的效果
2007-10-23 13:40:00
![](https://img.aspxhome.com/file/UploadPic/200710/23/20071023145336612s.jpg)
获取SqlServer存储过程定义的三种方法
2024-01-24 06:03:38
用python爬取租房网站信息的代码
2022-04-30 07:03:38
MySQL Order By Rand()效率
2011-01-04 19:34:00
使用Python自动生成HTML的方法示例
2022-08-12 12:12:18
python 下划线的不同用法
2021-01-20 16:55:13
Numpy数组转置的实现
2022-10-16 09:15:34
![](https://img.aspxhome.com/file/2023/1/109331_0s.jpg)
python爬虫之遍历单个域名
2021-06-28 07:45:34
Pytest执行unittest TestSuite(测试套件)的实现方法
2023-12-23 06:05:14
Javascript动画效果(3)
2024-04-22 13:07:59
Spring 数据库连接池(JDBC)详解
2024-01-22 19:00:36
python转换字符串为摩尔斯电码的方法
2022-01-01 10:17:44
python使用super()出现错误解决办法
2021-05-01 02:48:48
ASP编程中的常见问题
2007-09-20 13:32:00
python3定位并识别图片验证码实现自动登录功能
2022-07-23 13:23:59
![](https://img.aspxhome.com/file/2023/2/131252_0s.png)
mysql 5.7.14 下载安装、配置与使用详细教程
2024-01-15 14:39:25
Python使用random模块生成随机数操作实例详解
2022-06-28 21:50:27
switchery按钮的使用方法
2024-04-29 13:40:44
![](https://img.aspxhome.com/file/2023/3/132593_0s.png)
Python制作简易版小工具之计算天数的实现思路
2023-10-29 08:12:07
![](https://img.aspxhome.com/file/2023/4/91874_0s.png)