大根堆實現

2021-07-27 03:55:25 字數 743 閱讀 1613

堆:有兩種,一種是大根堆,另一種是小根堆。大根堆的意思是在跟的位置那個數是最大的。同理,小根堆的根元素是最小的。

堆是乙個滿的二叉樹,除了最後乙個節點可能不是滿的。所以用陣列去陣列去實現它。乙個節點的index為i,則這個節點的兩個子節點的下標應該為2*i+1和2* i+2;父結點那就是(i-1)/2;

下面是大根堆**的實現:

public class

myheap

extends

comparable

>

public boolean isempty()

/*** 插入節點

* @param e

*/public boolean insert(e e)

/*** 向上移動函式

* @param i

*/private void checkup(int i)

array[i] = object;

}public e remove()

/*** 使小的節點向下走

* @param i

*/private void checkdown(int i)

if(e.compareto((e)array[lachrid])>=0)

break;

array[i] = array[lachrid];

i = lachrid;

}array[i] = e;

}}

C 實現大根堆

一 堆的定義 堆的物理儲存結構是一維陣列,邏輯儲存結構是完全二叉樹。堆的基本操作包括 insert 向堆中插入乙個元素,deletetop 刪除堆頂元素 上面的就是乙個大根堆,大根堆具有以下性質 每乙個節點的值都小於它父節點的值。我們也可以從上面的中看出來。但是需要注意的是,每乙個節點的值的大小與它...

堆(大根堆 小根堆)

堆又可稱之為完全二叉堆。這是乙個邏輯上基於完全二叉樹 物理上一般基於線性資料結構 如陣列 向量 鍊錶等 的一種資料結構。學習過完全二叉樹的同學們都應該了解,完全二叉樹在物理上可以用線性資料結構進行表示 或者儲存 例如陣列int a 5 就可以用來描述乙個擁有5個結點的完全二叉樹。那麼基於完全二叉樹的...

堆(Heap)大根堆 小根堆

具有以下的特點 1 完全二叉樹 2 heap中儲存的值是偏序 min heap 父節點的值小於或等於子節點的值 max heap 父節點的值大於或等於子節點的值 一般都用陣列來表示堆,i結點的父結點下標就為 i 1 2。它的左右子結點下標分別為2 i 1和2 i 2。如第0個結點左右子結點下標分別為...