为了账号安全,请及时绑定邮箱和手机立即绑定

请教一下什么是堆?(不是数据结构中的堆)?

请教一下什么是堆?(不是数据结构中的堆)?

慕妹3146593 2019-09-10 14:10:37
什么是堆?(不是数据结构中的堆)
查看完整描述

4 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表

查看完整回答
反对 回复 2019-09-14
?
料青山看我应如是

TA贡献1772条经验 获得超7个赞

堆是一棵完全二叉树:
1、其根结点的值小于两个子结点的值,其余任何一个结点的值都小于其子结点的值——小根堆。
2、其根结点的值大于两个子结点的值,其余任何一个结点的值都大于其子结点的值——大根堆。

查看完整回答
反对 回复 2019-09-14
?
慕慕森

TA贡献1856条经验 获得超17个赞

简单说堆是一种完全二叉树 一般总用来构造优先级队列
堆的特性是父结点总优它任意子节点(所以堆顶元素为最优 但不需要保证左子树和右子树的关系)

堆的物理结构一般用数组等支持索引的线性结构(因为是完全二叉树..)
并且实现构造堆 弹出堆顶元素 添加元素并调整堆等操作

堆排序也是用这个原理实现的 先构造一个堆 然后不断的弹出堆顶元素并调整堆 生成的序列则是有序的

查看完整回答
反对 回复 2019-09-14
  • 4 回答
  • 0 关注
  • 619 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信