这部分主要目的是对于时间空间复杂度、算法评价标准有一个了解,以便于在后面的学习中可以对各种数据结构的效率有一个客观的评价标准 对比起来也更容易
一、算法代价
代价可以分为两种 时间代价和空间代价
时间代价主要是指算法执行过程中所需的时间
空间代价指算法所需要的存储器资源
对于一个算法的评价应该可以客观地展现算法本身的效率 而与算法执行的硬件条件、软件环境无关
对于算法的评价可以有最差、最好、平均三种角度来分析
比较算法的方法有事后统计方法 和事前分析估计方法,事后统计就是找两个算法来实际跑一跑,统计出一些性能参数来比较算法的开销;事前分析估计方法也称为渐进算法分析,估算对于一个问题的算法当问题规模变大时所需的开销情况
二、时间代价
把执行算法所需要的时间T写为与输入规模n相关的函数T(n)
常见时间复杂度:
三、渐进分析
当输入规模趋于无穷大时 对算法运行时间函数T(n)的渐进性态的估计,提供了对算法资源开销进行评估的简单化的模型
上限——大O表示法
对于非负函数T(n) 若存在两个正常数c和n0 n>n0时有T(n)≤cf(n),则称T(n)当n充分大时有上限 且f(n)是他的一个上限,记为T(n)∈O(f(n))
也就是说 当输入问题规模趋于无限大的时候 算法执行时间是可以小于等于一个关于n的函数值
例 某一算法平均情况下 T(n)=c1n2+c2n, c1、 c2为正数。 当n>1时, c1n2+c2n≤c1n2+c2n2≤(c1+