为了预测程序运行的时间如何锁着实例特征的变化而变化,我们进行简单的估计步数,不必对程序进行准确的操作计数和执行步数,在这里一般采用大O记法,但是Ω记法、Θ记法、小o记号也是很常用的,下面对其做一一分析说明
1、大O记法
定义:f(n)=O(g(n)),当且仅当存在常数两个正整数c和n0,使得n>n0的时候f(n)≤c*g(n)。
表示方法:f(n)=O(g(n))
1)例如:f(n)=3n+2=O(n)
当n>2的时候,2n +2<3n,这时n0=3,c=3,则n>n0的时候,f(n)<c(n),所以f(n)=O(n)。
2)现在再证明f(n)=2n+2=O(n^2)
当n>2的时候,3n+2<2n^2,所以可选n0=2,c=2,则n>n0的时候,f(n)<c(n^2),所以f(n)=O(n^2)。
小结:可以看出来大O表示方法g(n)通常为f(n)的最高次幂或者更高次幂。
2、Ω记法
Ω记法与大O记法类似,它表示函数在渐近增长率意义上的下限,可以理解为算法运行时间的下限。
定义:f(n)= Ω (g(n)),当且仅当存在常数两个正整数c和n0,使得n>=n0的时候f(n)>=c*g(n)。
1)对于所有的n有f(n)=3n+2>3n,因此f(n)=Ω(n),更直接可以看出f(n)=Ω(1)
2)例如:f(n)=2n^2-4=Ω(n^2)
当n>2的时候,2n^2-4>n^2,所以可选n0=2,c=1,则n>n0的时候,f(n)>c(n^2),所以f(n)=Ω(n^2)。
小结:可以看出来Ω表示方法g(n)通常为f(n)的最高次幂或者更低次幂。
3、Θ记法
定义:Θ记号介于大O记号和Ω记号之间。它表示g(n)和f(n)相同的阶数
1)例如:2n<=t(n)<=2n+2,则g(n)=Θ(n)
4、小o记号
定义:f(n)=o(g(n))当且仅当f(n)=O(g(n))且f(n)≠Ω(g(n))。可以看到小o记法给出了严格的上界。
1) 例如:因为3n+2=O(n^2)且3n+2≠Ω(n^2),所以3n+2=o(n^2),但是3n+2≠o(n).
2) 同样10n^2+4n+2=o(n^3),但是10n^2+4n+2≠o(n^2).