資料結構——堆

CairBin發表於2022-04-09

堆的:

1.堆是一種特殊的完全二叉樹

2.所有的節點都大於等於(最大堆)或小於等於(最小堆)它的子節點。

最大堆:

圖例:

最小堆:

圖例:

js中的堆:

1.js中通常用陣列表示堆。

2.左側子節點的位置是2*index+1。

3.右側子節點的位置是2*index+2。

4.父節點位置是(index-1)/2

圖例:

堆的應用:

1.堆能高效、快速地找出最大值和最小值,時間複雜度:0(1)。

2.找出第k個最大(小)元素。

 

第k個最大(小)元素解題思路:

1.構建一個最小堆,並將元素依次插入堆中。

2.當堆的容量超過k,就刪除堆頂。

3.插入結束後,堆頂就是第k個最大元素。

 

相關文章