CLRS第十章思考題

2021-07-08 15:12:01 字數 1993 閱讀 9166

未排序的單鏈表

已排序的單鏈表

未排序的雙向鍊錶

已排序的雙向鍊錶

search(l,k)o(

n)o(

n)o(

n)o(

n)insert(l,x)o(

1)o(

n)o(

1)o(

n)delete(l,x)o(

n)o(

n)o(

1)o(

1)successor(l,x)o(

1)o(

1)o(

1)o(

1)predecessor(l,x)o(

n)o(

n)o(

1)o(

1)minimum(l)o(

n)o(

1)o(

n)o(

1)maximum(l)o(

n)o(

n)o(

n)o(

n)鍊錶是排序

鍊錶不是排序

不排序,不相交

make-heapo(

1)o(

1)o(

1)inserto(

n)o(

1)o(

1)minimumo(

1)o(

n)o(

n)extract-mino(

1)o(

n)o(

n)uniono(

n1+n

2)o(

1)o(

1)a) 因為兩個演算法中的random(1,n)產生的序列相同,所以當compact-list-search中的 wh

ile 經過

t 次迭代,compact-list-search'的返回值與compact-list-search相同,且執行for, while 迴圈的總次數至少為 t;

b) 由於compact-list-search'要麼在

t 次迴圈中找到元素,要麼從位置

i到關鍵字

k 之間距離 xt

,期望執行時間 o(

t+e[

xt])

。c) 距離至少是

r 的概率和距離小於

r的概率一樣,當 t=

1 時,距離小於

k 的概率是 n−

rn,因此: pr=

(n−r

n)t=

(1−r

n)t

使用 (c.25)有: e[

xt]=

∑r=1

∞pr=∑

r=1n

pr≤∑r

=1n(

1−rn

)td) ∑r

=0n−

1rt≤

∫n0x

tdx=

nt+1

t+1

e) e[x

t]=∑

r=1n

(1−r

n)t=

∑r=0

n−1(

rn)t

=1nt

∑r=0

n−1r

t≤1n

t⋅nt

+1t+

1=nt

+1 o

(t+e

[xt]

)=o(

t+n/

(t+1

))=o

(t+n

/t)

g) 由於compact-list-search最小化執行時間,又 f) 得到的 o(

t+n/

t),當 t=

n/t 即 t=

n−−√

時可得到最小值,這使得執行期望是 o(

n−−√

) ;

h) 如果有相同的關鍵字,隨機會大量重複判斷一些無用的值,使得漸進時間複雜度沒有改進。

CLRS第十六章思考題

首先證明硬幣找零問題有最優子結構,設我們有找 n 美分的問題的最優解,且知道這個最優解使用了乙個 c美分的硬幣,設這個最優解使用了 k 個硬幣,則我們認為解決這個問題的最優解要用到問題 n c美分且使用了 k 1 個硬幣。很明顯,解決 n c 美分且使用了 k 1 個硬幣使用了 n 美分的解,如果我...

CLRS第五章思考題

a 設在第 j 次增加時,計數器為 i,表示 ni 若計數器增加,則值增加 ni 1 n i 概率為 1 ni 1 ni 因此有 e xj 0 pr 1 pr 0 1 1ni 1 n i 1 n i 1 ni 1ni 1 ni 1 執行一次的期望為 1,執行 n 次的期望為 n。b 一次增加的方差 ...

第十章 物件導向思考

程式清單10 1 testloanclass.j a import j a.util.scanner public class testloanclass 程式清單10 2 loan.j a public class loan construct a loan with specified annu...