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

    文章

    226

    浏览量

    25418
  • 堆栈
    +关注

    关注

    0

    文章

    183

    浏览量

    20421
  • root
    +关注

    关注

    1

    文章

    86

    浏览量

    22007
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深度睡眠时为什么串口会发送一堆 \\0?

    RT,初始化串口,发送数据然后休眠,串口工具会收到CW32L010发送的一堆� ,AI统计了下 128个字节,是什么原因啊?
    发表于 11-28 07:25

    和栈的区别

    个由C/C 编译的程序占用的内存分为以下几个部分: 栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 区(heap):般由
    的头像 发表于 11-27 18:13 903次阅读

    了解什么是METI备案

    METI备案是指将产品信息提交给日本经济产业省(简称METI)的登记程序,主要适用于在日本销售或进口特定电子电器产品的公司。该备案是日本电气安全管理体系的部分,与PSE认证(日本电气用品安全法)紧密相连。
    的头像 发表于 10-21 15:27 263次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>什么是METI备案

    了解什么是TELEC认证

    TELEC认证是日本针对无线电设备实施的种强制性合规认证,其全称为「Telecom Engineering Center认证」,中文通常称为「日本无线电设备认证」。它依据日本《无线电法》(Radio Law)实施,旨在确保所有无线设备在日本使用时不会对其他通信系统产生干扰,并能安全、稳定地工作。
    的头像 发表于 10-13 13:49 254次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>什么是TELEC认证

    ALM(应用生命周期管理)解析:了解其概念、关键阶段及Perforce ALM工具推荐

    什么是ALM(应用生命周期管理)?它远不止是SDLC!了解其概念、关键阶段以及如何借助Perforce ALM这类工具,实现端到端的可追溯性、加速发布并保障合规性。
    的头像 发表于 09-19 11:03 1252次阅读
    ALM(应用生命周期管理)解析:<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>其概念、关键阶段及Perforce ALM工具推荐

    带你了解海凌科毫米波雷达

    什么是毫米波雷达?毫米波雷达有什么特点?毫米波雷达有什么作用?海凌科有哪些系列毫米波雷达?带你了解!毫米波的定义毫米波是指频率在30GHz至300GHz之间、波长为1~10毫米的电磁波,兼具微波
    的头像 发表于 08-11 12:04 1090次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b>带你<b class='flag-5'>了解</b>海凌科毫米波雷达

    了解什么是 BQB 认证

    在蓝牙产品快速普及的今天,无论是蓝牙耳机、音箱、手表,还是智能家居、车载设备,只要你的产品宣称使用了蓝牙技术,就必须通过BQB认证。那么,BQB认证是什么?为什么它如此重要?该怎么做?本文为你
    的头像 发表于 07-18 14:53 1319次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>什么是 BQB 认证

    了解微型电机及其特点

    以前看过不少关于微电机的资讯,如微电机应用、微电机原理等等,那么什么是微电机呢?目前还是有不少人对微电机不了解,很多人觉得就是小电机,实际上微电机除了体积小之外,还具有普通电机不具备的优点。微电机
    的头像 发表于 07-17 08:46 737次阅读

    了解电压谐波

    我们经常会听到谐波,到底什么是谐波,怎么定义的?为什么要关注谐波?什么时候关注谐波?谐波如何计算或标准规定的谐波的算法是怎样的?GB关于电压谐波又是如何评估的?带着诸多的问题,我们一起来了解
    的头像 发表于 06-28 17:23 3826次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>电压谐波

    如何理解整流桥

    核心概念句话:整流桥,就是把“来回跑”的交流电,变成“只往个方向跑”的直流电的“交通警察”。 、为什么需要整流? 想象下水流: 交
    的头像 发表于 06-05 17:14 893次阅读
    如何理解整流桥<b class='flag-5'>堆</b>?

    精准计量·高效适配:分流器体式直流电能表或成为充电最佳搭档

    探讨充电如何重构充电生态,并解析DJZ1226体化直流电能表在这充电的应用。
    的头像 发表于 04-16 14:50 733次阅读
    精准计量·高效适配:分流器<b class='flag-5'>一</b>体式直流电能表或成为充电<b class='flag-5'>堆</b>最佳搭档

    :整流电路的“中流砥柱”

    大家好!今天我们来聊聊电子电路中个非常重要的元器件——桥。无论是家用电器、工业设备,还是通信设备,桥都扮演着不可或缺的角色。它虽然看起来不起眼,但却是整流电路的“中流砥柱”。那
    的头像 发表于 04-01 17:07 2129次阅读

    看懂激光的性质

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

    了解Highcharts

    标题 描述图表的文本。通常位于图表的顶部。 系列 图表上显示的个或多个数据序列。 提示框 将鼠标悬停在图表上的序列或点上时,您可以获得描述图表特定部分中的值的工具提示。 传说 图例在图表中显示数据
    的头像 发表于 01-06 11:33 964次阅读
    <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