演算法導論第三版習題6 3

2021-07-10 04:25:52 字數 937 閱讀 1612

(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...