因為排序是log(n)級別
因此堆一定是一個樹形結構:二叉堆
這個二叉樹的特點:
- 父親結點總是 > 子結點
image.png
- 二叉堆必須是一個完全二叉樹。完全二叉樹指該二叉樹除了最后一層外,其他層的結點個數必須是最大值,且最后一層子節點必須全部集中在左側。
image.png
注意:這樣的堆稱為“最大堆”,因為最上面的根結點一定是最大的值。如果我們要構建最小堆,則只需要保證根節點總是小于子節點。
給二叉堆每個結點標上序列號
image.png
我們可以輕易得出
- 每個結點的左子結點的序列號一定是該結點的兩倍
- 每個結點的右子結點的序列號一定是該結點的兩倍 + 1
注意:不使用數組第0號位存儲