0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文了解堆的性质和证明

如意 来源:CSDN 作者:CaspianSea 2020-06-22 10:13 次阅读

这里说的堆(heap)是一种 nearly complete binary tree:除了最低的一层外,其它层填充满了结点,并且最底层的结点是从左到右填充的。

这里假定root结点的索引从1 开始。

它有如下的性质:

1. 对于一个包含 n个元素的heap, 它的高度为 floor(lg n)

证明: 用 h表示这个heap的高度。则有:

2^h 《= n 《= 2^(h+1) -1 《 2^(h+1)

对上面取对数:

h 《 = lgn 《 h + 1

考虑到 h为整数, h只能是 floor(lg n)。

2. 对于以数组形式存储的 n个元素的heap, 叶子结点的索引为 floor(n/2)+1, floor(n/2)+2, 。。., n

证明: 假定叶子结点索引为 floor(n/2), 那么, 2 * floor(n/2) 《 n, 表示这个叶子节点存在子结点。。,也就是它不是叶子结点。

2 * (floor(n/2)+1) =2 * floor(n/2) + 2 》 n, 不存在子节点,所以,索引为 floor(n/2)+1的结点是叶子结点。

3. n个元素的heap, 它的叶子结点的个数为 ceiling[n/2]

证明: 根据 2可以得出这个结论。

4. 对于 n个元素的heap, 最多有ceiling(n/2^(h+1))个高度为h的结点

证明 i: 用归纳法。

当 h = 0时的结点为叶子结点,根据3, 个数为 ceiling(n/2) = ceiling(n/2^(h+1)(当 h = 0)。

所以, h =0时成立。

假定 h-1时成立,那么此时高度 h-1的结点个数为 ceiling(n/2^(h-1))。

那么, 考虑去掉所有叶子结点的heap T‘。它的节点数为 n - ceiling[n/2] = floor(n/2)。

在原来堆中高度为 h的结点在 T’中对应的高度为 h-1.

那么在原来堆中高度h的结点的个数等于 T‘中高度为 h-1的个数:

ceiling( floor(n/2)/2^(h-1)) 《= ceiling((n/2)/2^(h-1)) = ceiling(n/2^h)。

证明 ii:

假定结点 i高度为 h,那么, i, i*2, i*4, 。。., i*2^h 为 i的最长路径,并且 i*2^(h+1) 》 n.

于是有,

i*2^h 《= n 《 i * 2^(h+1)

i 》 n/2^(h+1), i 《 2 * (n/2^(h+1))

所以, i的取值为, ceiling(n/2^(h+1)), ceiling(n/2^(h+1)) + 1, 。。., ceiling(n/2^(h+1)) + ceiling(n/2^(h+1)) - 1

共有 ceiling(n/2^(h+1)) 个。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 节点
    +关注

    关注

    0

    文章

    220

    浏览量

    24595
  • 堆栈
    +关注

    关注

    0

    文章

    182

    浏览量

    19883
  • root
    +关注

    关注

    1

    文章

    86

    浏览量

    21450
收藏 人收藏

    相关推荐

    看懂激光的性质

    激光发射的光子都对应于相同的能量跃迁,所以它们都有相同的频率。像这样的单频光通常被描述为单色。相比之下,回想下热辐射(如白炽光源产生的热辐射)会产生不同强度的连续频谱。 激光不是完全单色的;有些由于活性介质
    的头像 发表于 01-23 10:10 193次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b>看懂激光的<b class='flag-5'>性质</b>

    了解Highcharts

    标题 描述图表的文本。通常位于图表的顶部。 系列 图表上显示的个或多个数据序列。 提示框 将鼠标悬停在图表上的序列或点上时,您可以获得描述图表特定部分中的值的工具提示。 传说 图例在图表中显示数据
    的头像 发表于 01-06 11:33 232次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>Highcharts

    了解Android UDP通信

    了解UDP通信协议 UDP(User Datagram Protocol,用户数据报协议)是种无连接、不可靠的传输层协议。它提供简单的数据传输服务,无需在发送方和接收方之间建立连接。每个UDP
    发表于 12-30 10:56

    变频器负载性质了解吗?如何维护变频器?

     众所周知,变频器是节能设备,但并不适用于所有设备的驱动。进行工程设计或设备改造,应在熟悉所驱动设备的负载性质了解各种变频器的性能和质量基础进行变频器的选型。  1、负载的性质  负载的性质
    的头像 发表于 11-25 01:05 266次阅读

    傅里叶变换的基本性质和定理

    傅里叶变换是信号处理和分析中的项基本工具,它能够将个信号从时间域(或空间域)转换到频率域。以下是傅里叶变换的基本性质和定理: 、基本性质
    的头像 发表于 11-14 09:39 1530次阅读

    了解激光测距传感器

    来源:SonneWay 编辑:感知芯视界 Link 在工业自动化中,激光测距传感器是最常见的传感器之。不过,您对它真的了解吗?本文将让您了解
    的头像 发表于 09-09 09:03 307次阅读

    如何使用SystemView的监控功能

    SystemView能够监视应用程序如何使用动态存储。这意味着,如果应用程序中使用了C或C++、自定义或RTOS提供的内存池对象,我们可以跟踪这些对象的使用情况。SystemView可以在
    的头像 发表于 08-09 18:07 959次阅读
    如何使用SystemView的<b class='flag-5'>堆</b>监控功能

    了解MySQL索引机制

    的呢?起静下心来,耐心看完这篇文章吧,干货不啰嗦,相信你定会有所收获。 、索引模型 模型也就是数据结构,常见的三种模型分别是哈希表、有序数组和搜索树。 了解MySQL的朋友已经知
    的头像 发表于 07-25 14:05 404次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>MySQL索引机制

    单相整流桥怎么测量好坏

    单相整流桥种常见的电子元件,主要用于将交流电转换为直流电。在测量单相整流桥的好坏时,需要掌握定的方法和技巧。 、单相整流桥
    的头像 发表于 07-16 09:22 1365次阅读

    科普 | 了解FPGA

    )、可编程逻辑块(LC)、 完整的时钟管理(CMT)、嵌入块式 RAM(BRAM)、布线资源、内嵌的底层功能单元和专用硬件模块等。 根据赛灵思披露的数据,个 LUT6 等效 1.6 个 LC,
    发表于 07-08 19:36

    了解常见DNS问题

    当企业的DNS出现故障时,为不影响企业的正常运行,团队需要能够快速确定问题的性质和范围。那么有哪些常见的DNS问题呢? 域名解析失败 : 当您输入个域名(例如https
    的头像 发表于 07-05 15:49 403次阅读

    get面阵工业相机

    快速了解面阵工业相机
    的头像 发表于 04-17 16:09 806次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b>get面阵工业相机

    带你了解NVIDIA Jetson

    计算机发展成为今天的机器有着悠久的历史,今天看到的许多计算机都遵循类似的设计结构,至少包含CPU、GPU、内存和存储。迄今为止,我们对计算机设计的了解大部分都是基于这些使计算机正常运行的关键组件
    的头像 发表于 04-09 11:49 783次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b>带你<b class='flag-5'>了解</b>NVIDIA Jetson

    电机干货!了解电机的原理及分类

    了解电机的原理及分类 电机是传动及控制系统中的重要部分,目前电机应用的重点也从过去简单的传动向电机的速度、位置、转矩的精确控制转移; 电机为何能够转动?电机又有哪些分类?不同工作环境下需要选用
    发表于 03-12 09:35

    RLC串联电路的性质如何判断

    如何判断它们。 首先,让我们来了解下RLC元件的特性。电阻是电流通过时所遇到的阻力,通常由导电材料制成,如纯铜线。电感是由线圈或线圈包裹的磁芯组成,当电流通过时,会产生磁场,而电容则是由两个金属板和介质组成,当电压施加时,会形成电场。
    的头像 发表于 03-09 14:11 4396次阅读