八十三、经典排序算法之堆排序
【摘要】 @Author:Runsen
编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化。 ---- Runsen
堆通常是一个可以被看做一棵树(完全)的数组对象。且总是满足以下规则:
堆是一棵完全二叉树
节点总是大于(或小于)它的孩子节点。
因此,根据第二个特性,就把二叉堆分为大顶堆(或叫最大堆),和小顶堆(或叫最小堆)。
...
@Author:Runsen
编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化。 ---- Runsen
堆通常是一个可以被看做一棵树(完全)的数组对象。且总是满足以下规则:
- 堆是一棵完全二叉树
- 节点总是大于(或小于)它的孩子节点。
因此,根据第二个特性,就把二叉堆分为大顶堆(或叫最大堆),和小顶堆(或叫最小堆)。
在上图中,1 2 是大顶堆 ,3 4 是小顶堆。判断是不是堆的条件:从根结点到任意结点路径上结点序列的有序性!大顶堆和小顶堆判断序列是顺序还是逆序!
Python并没有提供“堆”这种数据类型,它是直接把列表当成堆处理的。Python提供的heapq包中有一些函数,提供执行堆操作的工具函数
>>> import heapq
>>> heapq.__all__
- 1
- 2
文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。
原文链接:maoli.blog.csdn.net/article/details/111746749
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)