一些規則(引自:時間復雜度計算 )
1) 加法規則
T(n,m) = T1(n) + T2(n) = O (max ( f(n),g(m) )
?
2) 乘法規則
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(1)。
?
4) 一個經驗規則
復雜度與時間效率的關系:
c < log2n < n < n*log2n < n2< n3 < 2n < 3n < n! (c是一個常量)
|--------------------------|--------------------------|-------------|
?????????較好????????????????????一般?????????????較差
其中c是一個常量,如果一個算法的復雜度為c 、 log2n 、n 、 n*log2n,那么這個算法時間效率比較高,如果是 2n , 3n ,n!,那么稍微大一些的n就會令這個算法不能動了,居于中間的幾個則差強人意。