堆(英語:heap)是計算機科學中壹類特殊的數據結構的統稱。
堆通常是壹個可以被看做壹棵樹的數組對象。
堆總是滿足下列性質:
1 堆中某個節點的值總是不大於或不小於其父節點的值;
2 堆總是壹棵完全二叉樹。
若將和此次序列對應的壹維數組看成是壹個完全二叉樹,則堆的含義表明,完全二叉樹中所有非終端結點的值均不大於其左、右孩子結點的值。
由此,若序列{k1,k2,…,kn}是堆,則堆頂元素(或完全二叉樹的根)必為序列中n個元素的最小值(或最大值)。
擴展資料首先將要排序的所有關鍵碼放到壹棵完全二叉樹的各個結點中。
顯然,所有的結點Ki都沒有子女結點,因此以這樣的Ki為根的子樹已經是堆,然後從結點Ki開始,逐步把以為根的子樹排成堆,直到以K0為根的子樹排成堆,就完成了建堆過程。
堆支持以下的基本操作:
1、build:建立壹個空堆;
2、insert:向堆中插入壹個新元素;
3、update:將新元素提升使其符合堆的性質;
4、get:獲取當前堆頂元素的值;
5、delete:刪除堆頂元素;
6、heapify:使刪除堆頂元素的堆再次成為堆。
某些堆實現還支持其他的壹些操作,如斐波那契堆支持檢查壹個堆中是否存在某個元素。
參考資料百度百科-堆