首先是为什么会使用渐进来分析算法的效率,由于当问题的规模很小的时候,基本上在任何一台机器上都会以很快的速度计算出来,由于算法是机器无关的,编译器无关的,所以只有在问题规模较大的时候分析算法的效率才显得有意义。渐进就是将问题的规模趋向于无穷大,这样,对于系数,低阶项和常数项都是可以忽略的,因为随着问题规模逐渐趋向于无穷,这些项对于主导项来说,是完全可以忽略的,这样就有了渐进分析算法的五个符号。
基本符号:
1. 大O符号:用于表示最坏的情况下运行时间,比如冒泡排序算法是O(n^2)就是指的最坏情况下运行时间是O(n^2)
定义:给定两正值函数和
,定义:
-
,条件为:存在正 实数
和
,使得对于所有的
,有
上述的定义表明,当足够大,大过一个特定的
时,且存在一个正数
,使得
不大于
,则
是
的
表示。
和
的关系可以理解为
是
的一个上界,也可以理解为
最终至多增涨的速度与
一样快,但不会超过