第三章的开头提出了三个记号来表示函数的渐近紧确界。
Θ⁆、Ο ⁆和Ω⁆记号:
在每个部分,标出的n0的值是最小的可能值,任何更大的值也将有效。
(a)Θ⁆记号限制一个函数在常量因子内。如果存在正常量n0、c1和c2,使得在no及其右边,f(n)的值总位于c1g(n)和c2g(n)之间或等于它们,那么记f(n)=Θ(g⁆(n))。
(b)Ο⁆记号为函数给出一个在常量因子内的上界。如果存在正数n0和c,使得在n0及其右边,f(n)的值总小于或等于cg(n)的值。那么记f(n)=Ο(g(n))
(c) Ω⁆ 记号为函数给出一个在常量因子内的下界。如果存在正数n0和c,使得在n0及其右边,f(n) 的值总大于或等于cg(n), 那么 记f(n)=Ω(g(n))
记得在第二章中,我们使用O(n^2)来表示算法的运行时间的近似数据级。在书中第三章,作者证明了,即使在数学上, 扔掉低价项,并忽略最高阶项前的系数,这样的等价表示也是成立的。首先是:1/2 n^2−3n=Θ(n^2 ) ⁆ 即:
对正常量c1、c2和n0,使得对所有n>= n0,有: c_1 n^2≤ 1/2 n^2−3n≤ c_2 n^2 ⁆ .
// 使用O记号,我们总是可以仅仅通过检查算法的总体结构就可以 描述算法的运行时间。
证明了渐近上界与f(n)的关系,我们就可以仅仅分析算法的总体结构来描述算法的运行时间。比如在插入排序算法中,一共有两个循环。外循环对n个元素的n-1个都必须进行操作,第二个循环则对每个元素,都要遍历一次已排好序的序列,这序列的最大值也是n,每次遍历的操作时间为O(1),