問題:d叉堆性質與二叉堆相似,但其每個非葉子結點有d個孩子;
1) 如何在乙個陣列中表示乙個d叉堆?
2) 包含n個元素的d叉堆的高度是多少?
3) 給出 extract-max在d叉堆的有效實現,並用d與n表示其時間複雜度.
4) 給出insert在d叉堆的有效實現,並用d與n表示其時間複雜度.
5) 給出increase-key(a, i, k)的有效實現。當k < a[i]時,它會觸法乙個錯誤,否則執行a[i] = k,
並更新相應的d叉最大堆,使用d與n表示其時間複雜度。
3) heap-extract-max演算法就很適用於d叉堆;但問題在於max-heapify演算法。
在此需要將處理的結點和它所有的孩子進行比較。所以執行的時間應為θ(dlogd
n)。4) max-heap-insert演算法也適用於此。最壞情況下的執行時間就是堆的高度即θ(logd
n)。5)heap-increase-key演算法適用,執行時間為o(logd
n)
演算法導論6 2
本小節主要講述了將乙個陣列變成最大堆的過程 事實上還是比較簡單的,這裡使用了遞迴的方法 將堆分為左堆和右堆 遞迴地將左堆和右堆變成最大堆 合併左堆和右堆變成整體的最大堆 參照圖6 2的方法,說明 max heapify a,3 在陣列 a 27,17,3,16,13,10,1,5,7,12,4,8,...
演算法導論的C實現 畫出d叉樹
前幾天寫了乙個畫出二叉樹的函式 演算法導論的c實現 畫出二叉樹。章後有一道題是有關d叉樹的,記得後面幾章也會有用到d叉樹的地方,就把畫二叉樹的函式稍改了下,現在可以畫出d叉樹。d叉樹空格的計算原理和二叉樹很相近,比如現在有一棵高度為 h ei gh theight height 的d叉樹。當 n n...
演算法導論 6 堆排序
堆的分類 最大堆性質 高度 對於堆的一些基本操作 偽 描述 實現 max heapify python實現 123 4567 891011 1213 def max heapify i print max heapify i l left i r right i if l heap size and...