数据结构复习之 算法分析

这部分主要目的是对于时间空间复杂度、算法评价标准有一个了解,以便于在后面的学习中可以对各种数据结构的效率有一个客观的评价标准 对比起来也更容易

一、算法代价

代价可以分为两种 时间代价和空间代价

时间代价主要是指算法执行过程中所需的时间

空间代价指算法所需要的存储器资源

对于一个算法的评价应该可以客观地展现算法本身的效率 而与算法执行的硬件条件、软件环境无关

对于算法的评价可以有最差、最好、平均三种角度来分析 

比较算法的方法有事后统计方法 和事前分析估计方法,事后统计就是找两个算法来实际跑一跑,统计出一些性能参数来比较算法的开销;事前分析估计方法也称为渐进算法分析,估算对于一个问题的算法当问题规模变大时所需的开销情况

二、时间代价

把执行算法所需要的时间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+c2)n2。 因此取c=c1+c2, n0=1, 有T(n)≤cn2。 根据定义, T(n)在O (n2)中。
 

下限——大Ω表示法

对于非负函数T(n), 若存在两个正常数c和n0, 使得当n>n0时有T(n)≥ cg(n),则称函数T(n)当n充分大时有下限, 且g(n)是它的一个下限, 记为T(n)∈ Ω (g(n)), 或T(n)在集合Ω (g(n))中。 也称T(n)的阶不低于g(n)的阶
当输入问题规模趋于无限大的时候 算法执行时间是大于等于一个关于n的函数值

例 假定T(n)=c1n2+c2n (c1,c2>0), 则有c1n2+c2n≥ c1n2 (n>1)因此, 取c=c1, n0=1, 有T(n)≥ cn2, 根据定义, T(n)在Ω (n2)中

Θ表示法

上下限相等时可以使用Θ表示法 

四、算法特性

正确性 必须完成期望的功能, 将输入正确地转换为输出
具体步骤 算法应由一系列具体步骤组成 每一步对于人或机器应可读, 且在有限时间内执行完毕
确定性 无二义性
有限性 由有限步组成
可终止性
 

发布了63 篇原创文章 · 获赞 15 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/LieberVater/article/details/94862388