演算法複雜度

2021-07-11 21:05:10 字數 1305 閱讀 1015



這真的是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 存在乙個正...