定义:
- 如果存在正常数
c和n0,使得当N >= n0时,T(N) <= f(N),则记为T(N) = O(f(N)) - 如果存在正常数
c和n0,使得当N >= n0时,T(N) >= g(N),则记为T(N) = Ω(g(N)) T(N) = θ(f(N))当且仅当T(N) = O(f(N))且T(N) = Ω(g(N))- 如果
T(N) = O(f(N))且T(N) != θ(f(N)),则记为T(N) = o(f(N))
当我们说 T(N) = O(f(N)) 时候,我们保证 T(N) 是以不快于 f(N) 的速度增长,因此 f(N) 是 T(N) 一个上界
法则:
- 如果
T1(N) = O(f(N))且T2(N) = O(g(N)),则:T1(N) + T2(N) = max(f(N) + g(N))T1(N) * T2(N) = O(f(N) * g(N))
- 如果
T(N)是一个k次多项式,则T(N) = θ(N^k) - 对任意常数
k,(logN)^k = O(N)
时间分析一般法则
- for 循环:一次for循环的运行时间至多是该for循环内语句(包括测试)的运行时间乘以迭代的次数
- 嵌套的for循环:相乘
- 顺序语句:相加
- If、else语句:求MAX
对数
如果一个算法用常数时间O(1) 将问题的大小削减为其一部分(通常是二分之一),那么该算法就是 O(logN)


