python创建堆的方法实例讲解
作者:小妮浅浅 发布时间:2022-11-20 05:20:49
标签:python,创建堆
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


猜你喜欢
- 1.前序当下载突然断开后,断点续传就需要了,继续前面下载的内容下载。解决了不需要重复下载2.技术原理HTTP/1.1 开始支持断点续传,一般
- 很多人在学习了基本的Python语言知识后,就转入应用阶段了,后期很少对语言本身的新变化、新内容进行跟踪学习和知识更新,甚至连已经发布了好几
- 最近在公司接到一个需求,里面有一个 * 跳转。类似于选择地址的时候,选择的顺序是:省份->市->区。如果分三个页面跳转,那么体验非
- Matplotlib可以无缝的处理LaTex字体,在图中加入数学公式from matplotlib.patches import Polyg
- 本文内容皆为作者原创,码字不易,如需转载,请注明出处:https://www.cnblogs.com/temari/p/13048977.h
- 作者:Tr4c3 '为了保持脚本的通用性,放弃了 and (select col_name(objec
- 本文实例为大家分享了vue-week-picker实现按周切换的日历的具体代码,供大家参考,具体内容如下vue-week-picker安装n
- 本文实例讲述了Python使用sorted排序的方法。分享给大家供大家参考,具体如下:# 例1. 按照元素出现的次数来排序seq = [2,
- 前言:Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数,itertools提供的几个“无限
- 相关性实现统计和数据科学通常关注数据集的两个或多个变量(或特征)之间的关系。数据集中的每个数据点都是一个观察值,特征是这些观察值的属性或属性
- 业务难点设计一个抽奖系统,这个系统并不是具体化,是抽象化,具有以下的几个难点:1、抽奖业务需要 复杂多变2、奖品类型和概率设置3、公平的抽奖
- 前言之前一直写不出来,这周周日花了一下午终于弄懂了, 顺便放博客里,方便以后忘记了再看看。 要实现的是输入一张 图,起点,终点,输出起点和终
- 爬楼梯(Climbing-Stairs)题干:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同
- python time.sleep()-睡眠线程还是进程?它会阻止线程。如果查看Python源代码中的Modules / timemodul
- window.onload=function() {&
- 前言最近又多了不少朋友关注,先在这里谢谢大家。关注我的朋友大多数都是大学生,而且我简单看了一下,低年级的大学生居多,大多数都是为了完成课程设
- 最近在看廖老师的python教程,在看到关于文件的操作时,廖老师的其中一段关于查找电脑里的python文件,突然想把之前写的python代码
- __str__函数如果定义了该函数,当print当前实例化对象的时候,会返回该函数的return信息可用于定义当前类的描述信息用法:def
- 1,在Python中将integer数转化为罗马数说明:在罗马数中(3999以内),和阿拉伯数字相似,可以把它分解为个位,十位,百位,千位,
- aspjpeg组件官方下载地址:http://www.persits.com/说明: 1、aspjpeg能对图片水印进行透明度调整