1.本章重点:
- 如何估计一个程序所需要的时间;
- 如何将一个程序的运行时间从天或年降低到秒甚至更少;
- 粗心使用递归的后果;
- 将一个数自乘得到其幂, 以及计算两个数的最大公因数的非常有效的算法;
2.基本概念:
- 如果存在正常数c和n0使得当N≥n0时T(N)≤cf(N),则记为T(N)=O(f(N)).
- 如果存在正常数c和n0使得当N≤n0时T(N)≥cg(N),则记为T(N)=Ω(g(N)).
- T(N)=θ(h(N))当且仅当T(N)=O(f(N))和T(N)=Ω(g(N)).
- 如果对每一正常数c都存在常熟n0使得当N>n0时 T(N) < cp(N),则T(N)=O(p(N)).有时也可以说,如果T(N)=O(f(N)).且T(N)≠Ω(g(N)),则记为T(N)=θ(h(N)).
3.重要结论:
2. 如果T1(N) = O(f(N))且T2(N) = O(g(N)), 则
1). T1(N) + T2(N) = O(f(N)+g(N));
2). T1(N) * T2(N) = O(f(N)*g(N));
4.一般法则:
- 分析的基本策略是从内部(或最深层部分)向外展开工作的.
5.定理:
- 如果M > N, 则 M mod N < M/2;