算法性能描述
1.时间复杂度
2.空间复杂度
时间复杂度:
用一个算法需要的基本操作数量来描述该算法的性能
基本操作数通常被描述为问题规模的函数。
基本操作:
一些基础的操作,如运算符操作:i = 5, i*3, 或者排序算法中的交换swap(a,b),都可看作基本操作。
基本操作的函数:T(n)
n是问题规模,T(n)是基本操作数的函数。
有名的渐近分析:令输入规模无限大,站在极限的角度看算法。
思想:当n趋于无穷时,用另一个常用函数来描述目标函数的行为。
(用于描述目标函数的简单函数,通常是我们常用的函数。)
原则:
1.大规模,渐近分析(小规模的问题即使算法不怎么样也能很快执行)
2.不关心常数因子和低阶项
3.最坏情况,平均情况,(最好情况则不重要)。
渐近分析点:
1.有名的渐近分析
2.渐进分析标记法
3.常用渐近时间复杂度
多项式,对数,指数,阶乘
算法的渐近分析来源于数学渐近分析:
数学的渐进分析常用标记5种:
大O标记:渐近上界 <= (2个函数数量级关系)
omega标记:渐近下界 <= (2个函数数量级关系)
theta标记:渐近紧确界 = (2个函数数量级关系)
小o标记:非渐近紧确上界 < (2个函数数量级关系)
w标记:非渐近紧确下界 > (2个函数数量级关系)
算法分析中:我们关注的是算法的渐近上界和紧确界,常用大O标记和theta标记。