一、算法的上界:大O()分析
算法
定義:稱一個函數g(n)是O(f(n)),當且僅當存在常數c>0和n0>=1,對一切n>n0均有|g(n)|<=c|f(n)|成立,也稱函數g(n)以f(n)爲界或者稱g(n)囿於f(n)。記做g(n)=O(f(n))。
函數
1) 加法規則spa
T(n,m) = T1(n) + T2(n) = O (max (f(n),g(m))htm
2) 乘法規則get
T(n,m) = T1(n) * T2(m) = O (f(n) * g(m))效率
3) 一個特例(問題規模爲常量的時間複雜度)循環
在大O表示法裏面有一個特例,若是T1(n) = O(c), c是一個與n無關的任意常數,T2(n) = O (f(n)) 則有經驗
T(n) = T1(n) * T2(n) = O (c*f(n)) = O(f(n))時間
也就是說,在大O表示法中,任何非0正常數都屬於同一數量級,記爲O⑴。view
4) 一個經驗規則
複雜度與時間效率的關係:
c < log2n < n < n*log2n < n2 < n3 < 2n < 3n < n! (c是一個常量)
二、算法的下界:
定義:Ω(g(n)) = { f(n) : 存在正常數c和n0,使全部n>=n0有0<=c*g(n)<=f(n) }
三、算法的漸進分析:
順序執行語句的最壞運行時間爲O(max(T1(n),T2(n)......Ti(n))),Ti(n)爲第i條語句的O(Ti(n))。
while循環的最壞運行時間:
例:while S1:
S2
最壞運行時間爲O(max(T1(n)*(I(n)+1),T2(n)*I(n))) , I(n)爲最壞狀況下循環體執行的次數。
(三)for 循環的最壞運行時間:和while循環的相似。
(四)if——else的運行時間:
例: if S1:
S2
else:
S3
最壞運行時間爲O(max(T1(n),T2(n),T3(n)))。