算法導論第三版習題7.4

7.4-1

我們可以猜測 T(n)cn2

T(n)max0qn1[cq2+c(nq1)2]+Θ(n)=max0qn1[cq2+c(nq1)2]+Θ(n)=cn22cn+c+Θ(n)cn22cn+Θ(n)cn2

最後一步可以使

c 爲恰當的數,與

Θ(n) 抵消得到。

7.4-2

在最好的情況下,數組每次都被分成 n/2n/21 規模的兩個字問題,故算法的複雜度爲

T(n)=T(n/2)+T(n/21)+Θ(n)

假設

T(n)cnlgn :


T(n)cn/2lgn/2+c(n/21)lg(n/21)+Θ(n)cn/3lg(n/3)+cn/3lg(n/3)+Θ(n)2cn/3lgn2cnlg3+Θ(n)2cn/3lgn

最後一步可以令

2cnlg3 足夠大使

2cnlg3Θ(n)<0 從而使不等式成立。故

T(n)=Ω(nlgn)

7.4-3

直接對 q2+(nq1)2 q 求導並使導數爲0可求得 q=(n1)/2 ,故該二次函數的最小值在區間的正中間,那麼最大值就在區間的兩個端點上取得。

7.4-4

同樣的,

E(X)=i=1n1j=i+1n2ji+1=i=1n1k=1ni2k+1i=1n1k=1ni22k=i=1n1Ω(lgn)=Ω(nlgn)

7.4-5

此時快速排序的層數爲 n(12)xk 的解 lgnk ,則快速排序階段的時間複雜度爲 O(nlgnk) ;
然後進行插入排序,由於只有每個長度小於 k 的子數組內部沒有排序,所以在插入排序過程中,每個元素不再需要和它前面所有的元素相比較,而最多只需要比較 k 次,一共有 n 個元素,所以插入排序過程的時間複雜度爲 O(nk) ,總的時間複雜度爲 O(nk+nlgnk)

7.4-6

要使最壞劃分比例爲 a:(1a) ,則必須選出的三個數至少有兩個是在數組的前面 an 個數中,故概率是 C23a2=3a2

点赞