演算法導論 6 2 d叉堆

2022-08-22 14:06:15 字數 618 閱讀 5672

問題: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...