基於向上調整與向下調整建堆

2021-10-23 06:47:47 字數 769 閱讀 3464

public class testdemo

//經過if條件語句 不知道child指向的左右哪棵子樹,但指向的肯定是左右子樹中值較大的那個

//下面判斷child位置的元素與parent位置的元素哪個大

//如果不符合大堆的要求(child位置的元素》parent位置的元素),交換兩者的值

if (array[child] > array[parent])else

//下次迴圈之前需要更新parent和child 的值

parent = child;

child = 2 * parent + 1;

}}//基於向下調整建堆 必須從後往前遍歷

public static void creatheap(int array , int size)

}//向上調整

private static void shiftup(int array, int size ,int index)else

child = parent;

parent = (child-1)/2;

}}//基於向上調整建堆 必須從前往後遍歷

public static void creatheap2(int array , int size)

}public static void main(string args) ;

creatheap2(array,array.length);

system.out.println(arrays.tostring(array));

}

堆的向上調整 向下調整(堆化)

資料結構上的堆在物理上是乙個陣列,在邏輯上是乙個二叉樹。大堆 根結點比孩子結點大 小堆 根結點比孩子結點小 堆化 向下調整 向上調整的前提都是 在二叉樹中,只有乙個位置不滿足堆的性質,其它位置都滿足堆的性質。向下調整 是讓調整的結點與其孩子節點進行比較 向上調整 是讓調整的結點與其父親結點進行比較 ...

堆排序(向下調整建堆後再排序)

includeusing namespace std void adjustdown int int int void buildmaxheap int a,int len void adjustdown int a,int k,int len a k temp 找到了最終的位置並放入 void h...

堆的向下調整以及建立

堆的向下調整 以小堆為例 1.先設定根節點為當前節點 通過下標來獲取 比較左右子樹的值,找出更小的值,用child來標記 2.比較child和parent的值,如果child比parent小,則不滿足小堆的規則,需要進行交換 3.如果child比parent大,滿足小堆的規則,不需要交換,調整就結束...