6-2 對d叉堆的分析return
a)用A[1]表示根,則其兒子爲A[2]到A[d+1],其孫子爲A[d+2]到A[d^2+d+1],以此類推。因此有
d-parent(i):
return [(i-2)/d + 1] (方括號表示下取整)
d-child(i,j):
return d(i-1) + j + 1
b)因爲每一個節點有d個兒子,因此含n個元素的d叉堆的高度爲O(logdn) = O(lgn/lgd)。
c)因爲輸出最大值後的調整,須要從d個兒子中選出最大的,故每層的調整都須要d次,有logdn層,故爲O(d*logdn)。
d)樹的高度,爲O(logdn)。
e)跟插入同樣,爲O(logdn)。
6-3 Young氏矩陣
c) 提取出最小元素後,須要有一個調整過程。將下方或者右方較小的元素提上來放到A[1,1]處,而後接着調整。因此有T(m,n) = T(m-1,n)|T(m,n-1) + 1。最壞是m和n每次都輪流減1,即爲O(m+n)。
d)插入元素後,將它跟左方以及上方的元素比較,跟較大的那個交換。重複之,直到沒有左方或者上方的元素比它大。很顯然,仍是 O(m+n)
e)創建矩陣,須要不斷插入n^2個元素,複雜度爲2n^3,而後不斷Extract-min便可。
f)老是與最右上角比較,若是等於,則返回。
若是大於,去除右上角元素所在的這一行。
若是小於,去除右上角元素所在的這一列。