9 1堆的複習

2021-10-18 03:59:33 字數 767 閱讀 3453

堆:1.滿足完全二叉樹   2. 左右子結點 都小於父節點  或 左右子結點 都大於父節點 

大堆:左右子結點 都小於父節點

小堆:左右子結點 都大於父節點 

// 堆**

public class heap>

//判斷堆中索引i處的元素是否小於索引j處的元素

private boolean less(int i, int j)

//交換堆中i索引和j索引處的值

private void exch(int i, int j)

//往堆中插入乙個元素

public void insert(t t)

//使用上浮演算法,使索引k處的元素能在堆中處於乙個正確的位置

private void swim(int k)

k = k / 2;}}

//刪除堆中最大的元素,並返回這個最大元素

public t delmax()

//使用下沉演算法,使索引k處的元素能在堆中處於乙個正確的位置

private void sink(int k)else

}else

//比較當前結點和子結點中的較大者,如果當前結點不小,則結束迴圈

if (!less(k,max))

//當前結點小,則交換,

exch(k,max);

k = max;}}

public static void main(string args)

}}

演算法複習1 堆

insert 函式有以下三種用法 1 在指定位置loc前插入值為val的元素,返回指向這個元素的迭代器 2 在指定位置loc前插入num個值為val的元素 3 在指定位置loc前插入區間 start,end 的所有元素 1 題目描述 如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中...

資料結構複習 堆

說真的浙大的老師講的挺好的。其中建堆的時候引用了哨兵概念少了很多判斷,然後用堆的插入刪除操作做起來簡直飛快。貼乙個自己練習的 貼的是最大堆,最小堆的操作其實是類似的。其實堆在其他地方還叫做優先佇列。自己模擬堆的話,還可以遍歷。直接用stl的話,不能遍歷。includeusing namespace ...

演算法複習(1) 堆排序

堆是一種完全二叉樹結構,以陣列儲存 堆的最後一層從左開始填充 對於元素個數為n的堆來說,高度為 floor lgn 對於給定下標i 從0開始 父節點,左兒子,右兒子分別為 parent i return i 1 1 left i return 2i 1 right i return 2i 2堆排序主...