算法导论第6章思考题
6.3-2
func(A)
1 A.heap-size=A.len
2 \quad for i= ⌊ A . l e n 2 ⌋ \lfloor {A.len\over2}\rfloor ⌊2A.len⌋ downto 1
3 \qquad MAX-HEAPIFY(A,i)
对于第2行的循环控制变量i来说,为啥要求它是从 ⌊ A . l e n 2 ⌋ \lfloor {A.len\over2}\rfloor ⌊2A.len⌋到1递减,而不是从1到 ⌊ A . l e n 2 ⌋ \lfloor {A.len\over2}\rfloor ⌊2A.len⌋递增呢?
这样就不被允许执行第三行了
6.3-3 证明:包含n个元素的堆中,至多有 ⌈ n 2 h + 1 ⌉ \lceil{n\over2^{h+1}}\rceil ⌈2h+1n⌉个高度为h的结点
h=0时,结点数为n- ⌊ n 2 ⌋ \lfloor{n\over2}\rfloor ⌊2n⌋= ⌈ n 2 ⌉ \lceil{n\over2}\rceil ⌈2n⌉,满足
假设高度为h-1时成立,