python创建堆的方法实例讲解

 更新时间:2021年03月17日 08:12:57   作者:小妮浅浅  
在本篇文章里小编给大家整理的是一篇关于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
# ------------------------------------

知识点扩展:

创建最大(小)堆

二叉堆本质上是一种完全二叉树,存储方式并不是链式存储,而是顺序存储

堆操作:插入(叶子节点上调),删除(堆顶元素下沉)

堆创建:非叶子节点下沉(从最后一个非叶子节点开始)

最小堆:

最小堆任何一个父节点的值,都小于等于它左右孩子节点的值

创建过程:如果非叶子节点值大于其子节点,将其下沉

最大堆:

最大堆任何一个父节点的值,都大于等于它左右孩子节点的值。

创建过程:如果非叶子节点值小于其子节点,将其下沉

到此这篇关于python创建堆的方法实例讲解的文章就介绍到这了,更多相关python创建堆的方法有哪些内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python抓取淘宝下拉框关键词的方法

    Python抓取淘宝下拉框关键词的方法

    这篇文章主要介绍了Python抓取淘宝下拉框关键词的方法,涉及Python文件读写、正则匹配及字符串操作等相关技巧,需要的朋友可以参考下
    2015-07-07
  • 深入详解Python中生成器的原理与应用

    深入详解Python中生成器的原理与应用

    生成器 是Python中一种非常实用的特性,它能帮助我们编写高效的代码,本文将详细为大家介绍生成器的原理、用法以及实际应用场景,有需要的小伙伴可以了解下
    2023-12-12
  • 学习python需要有编程基础吗

    学习python需要有编程基础吗

    在本篇文章里小编给大家分享的是一篇关于学习python有哪些必要条件,需要的朋友们可以学习下。
    2020-06-06
  • Python面向对象原理与基础语法详解

    Python面向对象原理与基础语法详解

    这篇文章主要介绍了Pyhton面向对象原理与基础语法,结合实例形式分析了Python面向对象程序设计中的基本原理、概念、语法与相关使用技巧,需要的朋友可以参考下
    2020-01-01
  • 通过实例解析Python RPC实现原理及方法

    通过实例解析Python RPC实现原理及方法

    这篇文章主要介绍了通过实例解析Python RPC实现原理及方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • pandas库中 DataFrame的用法小结

    pandas库中 DataFrame的用法小结

    这篇文章主要介绍了pandas库中 DataFrame的用法,利用pandas.DataFrame可以构建表格,通过列标属性调用列对象,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 浅谈Python中range与Numpy中arange的比较

    浅谈Python中range与Numpy中arange的比较

    这篇文章主要介绍了浅谈Python中range与Numpy中arange的比较,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python ansible服务及剧本编写

    python ansible服务及剧本编写

    python语言是运维人员必会的语言,而ansible是一个基于Python开发的自动化运维工具 (saltstack)。其功能实现基于SSH远程连接服务;ansible可以实现批量系统配置、批量软件部署、批量文件拷贝、批量运行命令等功能
    2017-12-12
  • Python实现批量文件整理的示例代码

    Python实现批量文件整理的示例代码

    批量文件整理一直是日常工作中令人头疼的事,使用 Python 进行大批量文件整理,可以大大提升工作效率。本文主要介绍了利用Python实现文件的重命名和删除,感兴趣的小伙伴可以关注一下
    2021-12-12
  • PyCharm活动模板设置步骤实现

    PyCharm活动模板设置步骤实现

    很多情况,我们在写代码都会存在经常要写一些简单且又重复的代码,Pycharm中的活动模板可以把这些使用频率很高的一些代码打包起来设置一个快捷键,本文就来介绍一下如何实现
    2023-12-12

最新评论