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

完善資料讓更多小伙伴認識你,還能領取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, 表示這個葉子節(jié)點存在子結點。。,也就是它不是葉子結點。

2 * (floor(n/2)+1) =2 * floor(n/2) + 2 》 n, 不存在子節(jié)點,所以,索引為 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‘。它的節(jié)點數為 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)) 個。

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

    關注

    0

    文章

    220

    瀏覽量

    24468
  • 堆棧
    +關注

    關注

    0

    文章

    182

    瀏覽量

    19796
  • root
    +關注

    關注

    1

    文章

    86

    瀏覽量

    21403
收藏 人收藏

    評論

    相關推薦

    了解Highcharts

    標題 描述圖表的文本。通常位于圖表的頂部。 系列 圖表上顯示的個或多個數據序列。 提示框 將鼠標懸停在圖表上的序列或點上時,您可以獲得描述圖表特定部分中的值的工具提示。 傳說 圖例在圖表中顯示數據
    的頭像 發(fā)表于 01-06 11:33 ?88次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>Highcharts

    了解Android UDP通信

    了解UDP通信協議 UDP(User Datagram Protocol,用戶數據報協議)是種無連接、不可靠的傳輸層協議。它提供簡單的數據傳輸服務,無需在發(fā)送方和接收方之間建立連接。每個UDP
    發(fā)表于 12-30 10:56

    變頻器負載性質了解嗎?如何維護變頻器?

    ?眾所周知,變頻器是節(jié)能設備,但并不適用于所有設備的驅動。進行工程設計或設備改造,應在熟悉所驅動設備的負載性質、了解各種變頻器的性能和質量基礎進行變頻器的選型。 ?1、負載的性質 ?負載的性質
    的頭像 發(fā)表于 11-25 01:05 ?188次閱讀

    傅里葉變換的基本性質和定理

    傅里葉變換是信號處理和分析中的項基本工具,它能夠將個信號從時間域(或空間域)轉換到頻率域。以下是傅里葉變換的基本性質和定理: 、基本性質
    的頭像 發(fā)表于 11-14 09:39 ?1128次閱讀

    了解激光測距傳感器

    來源:SonneWay 編輯:感知芯視界 Link 在工業(yè)自動化中,激光測距傳感器是最常見的傳感器之。不過,您對它真的了解嗎?本文將讓您了解
    的頭像 發(fā)表于 09-09 09:03 ?267次閱讀

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

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

    了解MySQL索引機制

    的呢?起靜下心來,耐心看完這篇文章吧,干貨不啰嗦,相信你定會有所收獲。 、索引模型 模型也就是數據結構,常見的三種模型分別是哈希表、有序數組和搜索樹。 了解MySQL的朋友已經知
    的頭像 發(fā)表于 07-25 14:05 ?320次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>MySQL索引機制

    單相整流橋怎么測量好壞

    單相整流橋種常見的電子元件,主要用于將交流電轉換為直流電。在測量單相整流橋的好壞時,需要掌握定的方法和技巧。 、單相整流橋
    的頭像 發(fā)表于 07-16 09:22 ?1125次閱讀

    了解常見DNS問題

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

    get面陣工業(yè)相機

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

    帶你了解NVIDIA Jetson

    計算機發(fā)展成為今天的機器有著悠久的歷史,今天看到的許多計算機都遵循類似的設計結構,至少包含CPU、GPU、內存和存儲。迄今為止,我們對計算機設計的了解大部分都是基于這些使計算機正常運行的關鍵組件
    的頭像 發(fā)表于 04-09 11:49 ?681次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>帶你<b class='flag-5'>了解</b>NVIDIA Jetson

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

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

    RLC串聯電路的性質如何判斷

    如何判斷它們。 首先,讓我們來了解下RLC元件的特性。電阻是電流通過時所遇到的阻力,通常由導電材料制成,如純銅線。電感是由線圈或線圈包裹的磁芯組成,當電流通過時,會產生磁場,而電容則是由兩個金屬板和介質組成,當電壓施加時,會形成電場。
    的頭像 發(fā)表于 03-09 14:11 ?4154次閱讀

    pcb應變測試有多重要?了解

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

    開發(fā)板載調試器跟miniwiggler是性質嗎?

    開發(fā)板載調試器跟miniwiggler是性質嗎?電路樣嗎?FT2232里面是否有程序,還是只是個轉換芯片?
    發(fā)表于 02-06 07:03