复杂度分析
在算法复杂度度量的三种记号中,大O记号是最常用的。从渐进的角度分析,大O记号把各算法的复杂度由低到高划分为很多层次,现在逐一进行介绍。1.常数O(1)
运行时间可表示为T(n)=O(1)的这一类算法,统称为“常数时间复杂度算法”。若代码中不含转向(循环,调用,递归等)必顺序执行,其复杂度即是O(1)。此类算法是最理想的。2.对数O(logn)
运行时间可表示为3.线性O(n)
运行时间可表示为T(n)=O(n)的这一类算法,统称为“线性时间复杂度算法”。4.多项式
5.指数
运行时间可表示为
的这一类算法(a>1),统称为“指数时间复杂度算法”。对于任意的c>1,
。这类算法的计算成本增长极快,通常被认为不可忍受。从
到
是有效算法到无效算法的分水岭。
算法分析:两个任务=正确性(不变性*单调性)+复杂度。
算法分析的主要方法:1)迭代:级数求和;2)递归:递归跟踪+递归方程;3)猜测+验证。
级数的复杂度分析