如果算法里面只有加减法,则算法时间算加减法的次数。
如果算法里面包含加法和乘法,则算法时间一般只算乘法次数,因为计算机计算加减法很快,可忽略。
时间复杂度的渐进表示法
-
T(n)=O(f(n))表示存在常数
C>0,
n0>0使得当
n>geqn0时有
T(n)≤C⋅f(n)
-
T(n)=Ω(g(n))表示存在常数
C>0,
n0>0使得当
n≥n0时有
T(n)≥C⋅g(n)
-
T(n)=θ(h(n))表示同时有
T(n)=O(h(n))和
T(n)=Ω(h(n))
O(f(n))可有无数种表达方式,一般取最小的上界
Ω(g(n))可有无数种表达方式,一般取最大的上界
时间复杂度分析小窍门
- 若两端算法分别有复杂度
T1(n)=O(f1(n))和
T2(n)=O(f2(n)),则
T1(n)+T2(n)=max(O(f1(n)),O(f(n)))
T1(n)+T2(n)=O(f1(n)×f2(n))
- 若
T(n)是关于n的k阶多项式,则
T(n)=θ(nk)
- 一个for循环的时间复杂度等于循环次数乘以循环体代码的复杂度
- if-else结构的复杂度取决于if的条件判断复杂度和两个分枝部分的复杂度,总复杂度取三者中最大