複習max heap | Mark's blog

文章推薦指數: 80 %
投票人數:10人

所以就從 heap 開始。

這次實作的是 max heap ,定義如下圖所示, max heap 為一個完整二元樹(complete binary ... 0% 最近想複習基本的資料結構,首先第一個想到還給老師就是heap了。

所以就從heap開始。

這次實作的是maxheap,定義如下圖所示,maxheap為一個完整二元樹(completebinarytree),且每個父節點皆大於等於其左右子節點,由於完整二元樹的性質,maxheap資料結構可以很方便的使用陣列來表示。

假設陣列indexi從1開始,heap用陣列來表示又可以延伸出以下節點間的性質: 有了以上的節點性質,就可以很方便的應用在以下的實作。

首先介紹maxheap裡面最重要的部分maxheapify,給定一個元素的index,由top-down的方式遞迴檢查該節點及其左右子節點有無符合maxheap定義,若無則調整之。

程式碼如下: 12345678910111213defmax_heapify(a,i,heap_size):left_i=2*i+1right_i=2*i+2ifleft_i



請為這篇文章評分?