堆就是用數組實現的二叉樹,所有它沒有使用父指針或者子指針。堆根據“堆屬性”來排序,“堆屬性”決定了樹中節點的位置。
堆的常用方法:
- 構建優先隊列
- 支持堆排序
- 快速找出一個集合中的最小值(或者最大值)
堆屬性
堆分爲兩種:最大堆和最小堆(小頂堆和大頂堆),兩者的差別在於節點的排序方式。
在最大堆中,父節點的值比每一個子節點的值都要大。在最小堆中,父節點的值比每一個子節點的值都要小。這就是所謂的“堆屬性”,並且這個屬性對堆中的每一個節點都成立。
例子:
優先隊列的出隊順序是按照優先級來的