對於t(n) = a*t(n/b)+c*n^k;t(1) = c 這樣的遞迴關係,有這樣的結論:
if (a > b^k) t(n) = o(n^(logb(a)));logb(a)b為底a的對數
if (a = b^k) t(n) = o(n^k*logn);
if (a < b^k) t(n) = o(n^k);
a=25; b = 5 ; k=2
a==b^k 故t(n)=o(n^k*logn)=o(n^2*logn)
t(n) = 25t(n/5)+n^2
= 25(25t(n/25)+n^2/25)+n^2
= 625t(n/25)+n^2+n^2 = 625t(n/25) + 2n^2
= 25^2 * t( n/ ( 5^2 ) ) + 2 * n*n
= 625(25t(n/125)+n^2/625) + 2n^2
= 625*25*t(n/125) + 3n^2
= 25^3 * t( n/ ( 5^3 ) ) + 3 * n*n
= ....
= 25 ^ x * t( n / 5^x ) + x * n^2
t(n) = 25t(n/5)+n^2
t(0) = 25t(0) + n^2 ==> t(0) = 0
t(1) = 25t(0)+n^2 ==> t(1) = 1
x = lg 5 n
25 ^ x * t( n / 5^x ) + x * n^2
= n^2 * 1 + lg 5 n * n^2
= n^2*(lgn)
時間複雜度 T n
時間複雜度 1.演算法的執行時間和語句的頻度 一條語句的執行次數稱為語句頻度 for inti 0 i n i 演算法中所有語句的頻度之即演算法的執行時間用t n 表示 t n 是矩陣階數n的函式 t n 2n 3 3n 2 2n 1 2.問題規模和演算法的時間複雜度 演算法求解問題的輸入量稱為規模...
x的n次的時間複雜度
比較容易想到的是一層迴圈,不斷更新res o n intfunction1 int x,int n return res 可以用遞迴,但複雜度仍為o n o n 遞迴深度 n 單層遞迴時間複雜度 o 1 intfunction1 int x,int n 遞迴另一種寫法,結果仍為o n 相當於一棵滿二...
資料結構2 演算法時間複雜度和空間複雜度的計算
演算法,即解決問題的方法。同乙個問題,使用不同的演算法,雖然得到的結果相同,但是耗費的時間和資源是不同的。就比如要擰乙個螺母,使用扳手還是鉗子是有區別的,雖然使用鉗子也能擰螺母,但是沒有扳手好用。條條大路通羅馬 解決問題的演算法有多種,這就需要判斷哪個演算法 更好 很多人誤以為程式就是演算法,其實不...