0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文了解堆的性質(zhì)和證明

如意 ? 來源:CSDN ? 作者:CaspianSea ? 2020-06-22 10:13 ? 次閱讀

這里說的堆(heap)是一種 nearly complete binary tree:除了最低的一層外,其它層填充滿了結(jié)點,并且最底層的結(jié)點是從左到右填充的。

這里假定root結(jié)點的索引從1 開始。

它有如下的性質(zhì):

1. 對于一個包含 n個元素的heap, 它的高度為 floor(lg n)

證明: 用 h表示這個heap的高度。則有:

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

對上面取對數(shù):

h 《 = lgn 《 h + 1

考慮到 h為整數(shù), h只能是 floor(lg n)。

2. 對于以數(shù)組形式存儲的 n個元素的heap, 葉子結(jié)點的索引為 floor(n/2)+1, floor(n/2)+2, 。。., n

證明: 假定葉子結(jié)點索引為 floor(n/2), 那么, 2 * floor(n/2) 《 n, 表示這個葉子節(jié)點存在子結(jié)點。。,也就是它不是葉子結(jié)點。

2 * (floor(n/2)+1) =2 * floor(n/2) + 2 》 n, 不存在子節(jié)點,所以,索引為 floor(n/2)+1的結(jié)點是葉子結(jié)點。

3. n個元素的heap, 它的葉子結(jié)點的個數(shù)為 ceiling[n/2]

證明: 根據(jù) 2可以得出這個結(jié)論。

4. 對于 n個元素的heap, 最多有ceiling(n/2^(h+1))個高度為h的結(jié)點

證明 i: 用歸納法。

當 h = 0時的結(jié)點為葉子結(jié)點,根據(jù)3, 個數(shù)為 ceiling(n/2) = ceiling(n/2^(h+1)(當 h = 0)。

所以, h =0時成立。

假定 h-1時成立,那么此時高度 h-1的結(jié)點個數(shù)為 ceiling(n/2^(h-1))。

那么, 考慮去掉所有葉子結(jié)點的heap T‘。它的節(jié)點數(shù)為 n - ceiling[n/2] = floor(n/2)。

在原來堆中高度為 h的結(jié)點在 T’中對應(yīng)的高度為 h-1.

那么在原來堆中高度h的結(jié)點的個數(shù)等于 T‘中高度為 h-1的個數(shù):

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

證明 ii:

假定結(jié)點 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)) 個。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 節(jié)點
    +關(guān)注

    關(guān)注

    0

    文章

    217

    瀏覽量

    24363
  • 堆棧
    +關(guān)注

    關(guān)注

    0

    文章

    182

    瀏覽量

    19717
  • root
    +關(guān)注

    關(guān)注

    1

    文章

    85

    瀏覽量

    21361
收藏 人收藏

    評論

    相關(guān)推薦

    如何使用SystemView的監(jiān)控功能

    SystemView能夠監(jiān)視應(yīng)用程序如何使用動態(tài)存儲。這意味著,如果應(yīng)用程序中使用了C或C++、自定義或RTOS提供的內(nèi)存池對象,我們可以跟蹤這些對象的使用情況。SystemView可以在
    的頭像 發(fā)表于 08-09 18:07 ?681次閱讀
    如何使用SystemView的<b class='flag-5'>堆</b>監(jiān)控功能

    了解常見DNS問題

    當企業(yè)的DNS出現(xiàn)故障時,為不影響企業(yè)的正常運行,團隊需要能夠快速確定問題的性質(zhì)和范圍。那么有哪些常見的DNS問題呢? 域名解析失敗 : 當您輸入個域名(例如https
    的頭像 發(fā)表于 07-05 15:49 ?244次閱讀

    get面陣工業(yè)相機

    快速了解面陣工業(yè)相機
    的頭像 發(fā)表于 04-17 16:09 ?551次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>get面陣工業(yè)相機

    電機干貨!了解電機的原理及分類

    了解電機的原理及分類 電機是傳動及控制系統(tǒng)中的重要部分,目前電機應(yīng)用的重點也從過去簡單的傳動向電機的速度、位置、轉(zhuǎn)矩的精確控制轉(zhuǎn)移; 電機為何能夠轉(zhuǎn)動?電機又有哪些分類?不同工作環(huán)境下需要選用
    發(fā)表于 03-12 09:35

    pcb應(yīng)變測試有多重要?了解!

    pcb應(yīng)變測試有多重要?了解!
    的頭像 發(fā)表于 02-24 16:26 ?1001次閱讀

    和棧的區(qū)別和使用注意事項

    和棧是在計算機科學中廣泛使用的兩種數(shù)據(jù)結(jié)構(gòu),它們具有不同的用途和特點。和棧的區(qū)別涉及到內(nèi)存分配、訪問方式、數(shù)據(jù)存儲等方面。在使用和棧時,還需要注意些細節(jié),以確保程序的正確性和效
    的頭像 發(fā)表于 01-18 17:24 ?2017次閱讀

    帶你了解 DAC

    了解 DAC
    的頭像 發(fā)表于 12-07 15:10 ?8461次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>帶你<b class='flag-5'>了解</b> DAC

    了解相控陣天線中的真時延

    了解相控陣天線中的真時延
    的頭像 發(fā)表于 12-06 18:09 ?1797次閱讀

    了解單向晶閘管的結(jié)構(gòu)及導電特性

    了解單向晶閘管的結(jié)構(gòu)及導電特性
    的頭像 發(fā)表于 12-05 15:52 ?1146次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>單向晶閘管的結(jié)構(gòu)及導電特性

    jvm配置內(nèi)存初始值參數(shù)

    程序中,內(nèi)存的初始值是非常重要的,它決定了程序在運行過程中能夠使用的內(nèi)存大小。因此,在優(yōu)化JVM性能的過程中,對于內(nèi)存初始值的合理配置是至關(guān)重要的。 首先,我們需要了解JVM中內(nèi)
    的頭像 發(fā)表于 12-05 14:17 ?715次閱讀

    了解剛?cè)峤Y(jié)合制造過程

    了解剛?cè)峤Y(jié)合制造過程
    的頭像 發(fā)表于 12-04 16:22 ?691次閱讀

    為什么血氧監(jiān)測很重要?快速了解它的“奧秘”

    為什么血氧監(jiān)測很重要?快速了解它的“奧秘”
    的頭像 發(fā)表于 11-29 11:46 ?477次閱讀
    為什么血氧監(jiān)測很重要?<b class='flag-5'>一</b><b class='flag-5'>文</b>快速<b class='flag-5'>了解</b>它的“奧秘”

    的實現(xiàn)思路

    什么是? 種 基于樹結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu),它是棵二叉樹 ,具有以下兩個特點: 個完全二
    的頭像 發(fā)表于 11-24 16:02 ?381次閱讀
    <b class='flag-5'>堆</b>的實現(xiàn)思路

    了解 PCB 的有效導熱系數(shù)

    了解 PCB 的有效導熱系數(shù)
    的頭像 發(fā)表于 11-24 15:48 ?1810次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b> PCB 的有效導熱系數(shù)

    了解皮膚電活動測量系統(tǒng)的設(shè)計、開發(fā)與評估

    電子發(fā)燒友網(wǎng)站提供《了解皮膚電活動測量系統(tǒng)的設(shè)計、開發(fā)與評估.pdf》資料免費下載
    發(fā)表于 11-24 10:42 ?0次下載
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>皮膚電活動測量系統(tǒng)的設(shè)計、開發(fā)與評估