算法是为求解一个问题需要遵循的、被清楚的指定的简单指令集合。
估计算法资源消耗所需的分析一般来说是一个理论问题,因此需要一套正式的系统架构。
定义:如果存在正常数c和

使得当N


时,T(N)

cf(N),则记为T(N)=O(f(N))。
定义:如果存在正常数c和

使得当N


时,T(N)

cg(N),则记为T(N)=

(g(N))。
定义:T(N)=

(h(N)),当且仅当T(N)=O(h(N))且T(N)=

(h(N)).
定义:如果T(N)=O(h(N)),当且仅当T(N)


(h(N)),则T(N)=o(p(N)).
例如,

增长率比

快,则可以说

=O(

),或者

=

(

).
法则1:
如果

且

那么
(a)

,
(b)

法则2:
如果T(N)是一个k次多项式,则

法则3:
对任意常数k,

首先将常数或低阶项放进大O是非常坏的习惯。
一、运行时间计算
法则1-for循环
一次for循环的运行时间至多该for循环内语句(包括测试)的运行时间迭代的次数
法则2-嵌套for循环
从里向外分析这些for循环。在一组嵌套for循环内部的一条语句,总的运行时间为该语句的运行时间乘以该组所有的for循环的大小乘积。
法则3-顺序语句
将各个语句的运行时间求和即可
法则4-IF/ELSE
一个if/else语句的运行时间从不超过判断再加上S1和S2中运行时间长者的总运行时间。