資料結構 大根堆

2021-09-02 17:47:26 字數 712 閱讀 7109

大根堆: 堆總是不大於其父節點的值:

二叉堆中的上浮,siftup,把新節點加在最後一位,然後跟該節點的父節點相比較,大於父節點,交換

二叉堆中的下沉,siftdown,把最大的根節點移除後,把最後乙個節點放在根的位置,然後把該根節點的左右孩子的最大值作比較,小了,交換。

public class maxheap>

public maxheap()

public maxheap(e arr)

}public int size()

public boolean isempty()

private int parent(int index)

private int leftchild(int index)

private int rightchild(int index)

public void add(e e)

private void siftup(int k)

}public e findmax()

//取出堆中的最大元素

public e extractmax()

private void siftdown(int k)

if(data.get(k).compareto(data.get(j))>=0)

data.swap(k, j);

k=j;}}

}

資料結構 堆(Heap)大根堆 小根堆

目錄 堆的儲存 一般都用陣列來表示堆,i結點的父結點下標就為 i 1 2。它的左右子結點下標分別為2 i 1和2 i 2。如第0個結點左右子結點下標分別為1和2。堆的操作 insert 插入乙個元素 新元素被加入到heap的末尾,然後更新樹以恢復堆的次序。每次插入都是將新資料放在陣列最後。可以發現從...

資料結構 最小堆 最大堆(小根堆 大根堆)

1.最小堆的實現參考 int a n void build else break a j 2 tem for int i 1 i n i cout int main 最大堆的實現差不多 2.以最小堆為例,說明加入乙個元素 void insert int x a i x void erase int ...

堆(大根堆 小根堆)

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