定义:
1. 如果存在正常数c和n0,使得当N>=n0时T(N)<=cf(N),则记为T(N) = O(f(N))。
2. 如果存在正常数c和n0,使得当N>=n0时T(N)>=cf(N),则记为T(N) = Ω(f(N))。
3. T(N) = Θ(h(N))当且仅当T(N) = O(h(N))和T(N) = Ω(h(N))。
4. 如果对所以的常数c存在n0使得当N>n0时T(N) < cp(N),则记为T(N) = o(p(N))。
通常以相对增长率来进行比较。
N^2的增长率比N要大,所以N = O(N^2)。
即T(N) = O(f(N))表示T(N)的增长率小于等于f(N)的增长率,T(N) = Ω(f(N))表示T(N)的增长率大于等于f(N)的增长率,T(N) = Ω(h(N))表示表示T(N)的增长率等于h(N)的增长率,T(N) = o(p(N))表示表示T(N)的增长率小于p(N)的增长率。
一般法则:
1. for循环 一个for循环的运行时间至多是该for循环内语句(包括测试)的运行时间乘以迭代的次数。
2. 嵌套循环 从里向外分析这些循环,在一组嵌套循环内部的一条语句总的运行时间为该语句的运行时间乘以该组所有循环的大小的乘积。
3. 顺序语句 将各个语句的运行时间求和即可。
4. if/else语句