這真的是2個很牛叉的演算法分析方法,你可以用主方法瞬間估算出演算法的複雜度
master method
t(n) = at(n/b)+h(n)
a >=1 ; b >1 ; h(n) : 不參與遞迴的複雜度函式
判斷n^log b (a)與h(n)的大小關係
= θ(h(n)) :該方法的複雜度為 θ(h(n)*lg(n))
> θ(h(n)) :該方法的複雜度為 θ(n^(log a/log b))
< θ(h(n)) :該方法複雜度為 θ(h(n))
這樣可以幫助你快速的分析出你得演算法的複雜度是否符合要求。
考研題,求時間複雜度,請說明下理由,
假定問題規模為n時,某遞迴演算法的時間複雜度記為t(n),已知t(1)=1,t(n)=2t(n/2)+n/2,用o表示的時間複雜度為()
a o(n) b o(nlogn) c o(n²) d o(n²logn)數學
萌伊6342014-09-26
優質解答
答案是b
根據條件遞推:
t(n) = n/2+2t(n/2) = n/2+2*(n/4+2t(n/4)) = n/2 + n/2 + 4t(n/4)
= n/2 + n/2 + n/2 + 8t(n/8) = .
可見 n 每次除2,是按 log 遞減的,所以在 logn 次以後減為1,又因為t(1)=1,
所以一共有 logn 個 n/2
也就是 n/2 * logn
所以答案是 o(nlogn) .
已知演算法a的執行時間函式為t(n)=8t(n/2)+n2
,其中n表示問題的規模,則該演算法的時間複雜度為( )。另已知演算法b的執行時間函式為t(n)=xt(n/4)+n2
,其中n表示問題的規模。對充分大的n,若要演算法b比演算法a快,則x的最大值為( )。
a.θ(n)
b.θ(nlgn)
c.θ(n2
)d.θ(n3
)a.15
b.17
c.63
d.65
所屬試卷:
答案:d 、c
2條回答
老師好,第二問是怎麼算的,謝謝
springfield 2016-03-05
評價(0)
(0)(0)引用
第二問b=4,這時候把四個選項代進去,可以得到log4(63) 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數... 演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以... 演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...演算法複雜度 時間複雜度和空間複雜度
演算法複雜度 時間複雜度和空間複雜度
演算法複雜度 時間複雜度和空間複雜度