(a) a.
leng
th=9
,故從i=
⌊a.l
engt
h/2⌋
=4開始呼叫max-heapify(a,i),a[
4]9]
8],故交換a[
4]和a
[8] 得到新的序列a1
= (b) 接下來呼叫max-heapify(a,3),a[
7]3]
6],故交換a[
3]和a
[6] 得到a2
= (c) 第三步呼叫max-heapify(a,2),a[
2]4]
5],故交換a[
2]和a
[5] 得到a3
= (d) 第四步呼叫max-heapify(a,1),a[
1]3]
2],故交換a[
1]和a
[2] 得到a′
4=;接下來由於a[
2]4]
,故又呼叫max-heapify(a,2),交換a[
2]和a
[4] 得到a′′
4=;在呼叫max-heapify(a,4)交換a[
4]和a
[8] 最後得到a4
= 因為
i 從⌊a
.len
gth/
2⌋遞減到1的過程中,能夠依次保持以下標大於
i 的節點為根結點的子樹都是最大堆,從而保持迴圈不變式
首先包含
n個元素的堆高度為⌊l
gn⌋ ,則當高度為
h 的這一層節點全滿時節點最多,此時 n=
2⌊lg
n⌋−h
>2l
gn−1
−h=n
/2h+
1故至多有⌈n
/2h+
1⌉個節點。
演算法導論第三版習題5 2
正好僱傭一次說明第一次僱傭的就是所有應聘者中最好的,所以概率為1n 正好僱傭 n 次說明所有應聘者按優秀從低到高依次出現,第一位是最差的,概率為1n 第二位其次,概率為1n 1,所以整體概率為1n 正好僱傭兩次,說明第乙個應聘者不是最好的,概率為n 1n,第二個應聘者是最好的,概率為1n 1,所以概...
演算法導論第三版習題5 3
在進入迴圈前,先將在整個陣列中隨機選擇乙個數至於a 1 即可 permute in place a 1 n a.length 2 swap a 1 with a random 1,n 3 for i 2 to n 4 swap a i with a random i,n 第二步其概率為1n 後面一樣...
演算法導論第三版習題8 1
最小深度為n 1 就像插入排序最好的情況一樣,對已經排序好的序列排列的情況。k 1nl gk k 1n lgn nlgn 所以,lg n o n lgn k 1nlg k k 1n 2lgk k n 2 1nlg k k n 2 1nl gk k n 2 1n lg n 2 n2lg n2 n 2l...