7.4-1
我們可以猜測 T(n)≥cn2 :
T(n)≥max0≤q≤n−1[cq2+c(n−q−1)2]+Θ(n)=max0≤q≤n−1[cq2+c(n−q−1)2]+Θ(n)=cn2−2cn+c+Θ(n)≥cn2−2cn+Θ(n)≥cn2
最後一步可以使
c 爲恰當的數,與
Θ(n) 抵消得到。
7.4-2
在最好的情況下,數組每次都被分成 ⌊n/2⌋和⌈n/2⌉−1 規模的兩個字問題,故算法的複雜度爲
T(n)=T(⌊n/2⌋)+T(⌈n/2⌉−1)+Θ(n)
假設
T(n)≥cnlgn :
T(n)≥c⌊n/2⌋lg⌊n/2⌋+c(⌈n/2⌉−1)lg(⌈n/2⌉−1)+Θ(n)≥cn/3lg(n/3)+cn/3lg(n/3)+Θ(n)≥2cn/3lgn−2cnlg3+Θ(n)≥2cn/3lgn
最後一步可以令
2cnlg3 足夠大使
2cnlg3−Θ(n)<0 從而使不等式成立。故
T(n)=Ω(nlgn)
7.4-3
直接對 q2+(n−q−1)2 對 q 求導並使導數爲0可求得 q=(n−1)/2 ,故該二次函數的最小值在區間的正中間,那麼最大值就在區間的兩個端點上取得。
7.4-4
同樣的,
E(X)=∑i=1n−1∑j=i+1n2j−i+1=∑i=1n−1∑k=1n−i2k+1≥∑i=1n−1∑k=1n−i22k=∑i=1n−1Ω(lgn)=Ω(nlgn)
7.4-5
此時快速排序的層數爲 n⋅(12)x≤k 的解 lgnk ,則快速排序階段的時間複雜度爲 O(nlgnk) ;
然後進行插入排序,由於只有每個長度小於 k 的子數組內部沒有排序,所以在插入排序過程中,每個元素不再需要和它前面所有的元素相比較,而最多只需要比較 k 次,一共有 n 個元素,所以插入排序過程的時間複雜度爲 O(nk) ,總的時間複雜度爲 O(nk+nlgnk)
7.4-6
要使最壞劃分比例爲 a:(1−a) ,則必須選出的三個數至少有兩個是在數組的前面 an 個數中,故概率是 C23a2=3a2