数据结构中的堆应用,是否仅限于堆排序算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3030个文字,预计阅读时间需要13分钟。
开始那一刻+一位演讲老师正在讲述正确的爱情观+情到深处,老师激动的说道:你一个月赚三千,凭什么让一个月赚三千的人喜欢你?+结果底部站起一个女孩,说:因为我骚啊!
开心一刻一天,一个演讲老师正在演讲正确的爱情观
情到深处,老师激动的说道:你一个月挣三千,凭什么让一个月挣三万的人喜欢你?
结果底下站起来一个女孩,说道:因为我骚呀
堆结构定义:堆就是用数组实现的完全二叉树,并且根据堆属性来排序,决定节点在树中的顺序
信息量是不是有点大?
欸,有这些疑问就对了,我们慢慢往下看
堆属性堆分为两种:大顶堆和小顶堆,也称最大堆和最小堆
在大顶堆中,父节点的值大于等于左右孩子节点的值。在小顶堆中,父节点的值小于等于左右孩子的值。这就是所谓的堆属性,并且这个属性对堆中的每一个节点都成立
注意:堆属性只限制了父节点与其左右孩子的大小关系,并没有限制左右孩子之间的大小关系
我们看个例子
上图中父节点有两个:9 和 5,9 比 5 和 7 都大,5 比 3 和 2 都大,满足大顶堆的属性,所以它是一个大顶堆
上图中父节点有两个:2 和 5,2 比 5 和 3 都小,5 比 7 和 9 都小,满足小顶堆的属性,所以它是一个小顶堆
由此我们可以得出:大顶堆的根节点存放的肯定是最大值,小顶堆的根节点存放的肯定是最小值
大顶堆能够快速得到最大值、小顶堆能够快速得到最小值,但也就仅此而已了。
本文共计3030个文字,预计阅读时间需要13分钟。
开始那一刻+一位演讲老师正在讲述正确的爱情观+情到深处,老师激动的说道:你一个月赚三千,凭什么让一个月赚三千的人喜欢你?+结果底部站起一个女孩,说:因为我骚啊!
开心一刻一天,一个演讲老师正在演讲正确的爱情观
情到深处,老师激动的说道:你一个月挣三千,凭什么让一个月挣三万的人喜欢你?
结果底下站起来一个女孩,说道:因为我骚呀
堆结构定义:堆就是用数组实现的完全二叉树,并且根据堆属性来排序,决定节点在树中的顺序
信息量是不是有点大?
欸,有这些疑问就对了,我们慢慢往下看
堆属性堆分为两种:大顶堆和小顶堆,也称最大堆和最小堆
在大顶堆中,父节点的值大于等于左右孩子节点的值。在小顶堆中,父节点的值小于等于左右孩子的值。这就是所谓的堆属性,并且这个属性对堆中的每一个节点都成立
注意:堆属性只限制了父节点与其左右孩子的大小关系,并没有限制左右孩子之间的大小关系
我们看个例子
上图中父节点有两个:9 和 5,9 比 5 和 7 都大,5 比 3 和 2 都大,满足大顶堆的属性,所以它是一个大顶堆
上图中父节点有两个:2 和 5,2 比 5 和 3 都小,5 比 7 和 9 都小,满足小顶堆的属性,所以它是一个小顶堆
由此我们可以得出:大顶堆的根节点存放的肯定是最大值,小顶堆的根节点存放的肯定是最小值
大顶堆能够快速得到最大值、小顶堆能够快速得到最小值,但也就仅此而已了。

