算法与程序

算法是解决问题的一种方法或一个过程,考虑如何将输入转换成输出,一个问题可以有多种算法
程序是程序设计语言对算法的具体实现
image.png

算法特性

有穷性:

一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成

确定性:

算法中的每一条指令必须有确切的含义,没有二义性,在任何条件下,只有唯一的一条执行路径,即对于相同的输入只能得到相同输出

输入:

一个算法有 0 个或多个输入

输出:

一个算法有一个或多个输出

算法设计要求

正确性

image.png

可读性

image.png

健壮性

image.png

高效性

image.png

算法的效率

时间效率

算法所消耗的时间

空间效率

算法执行过程中所耗费的存储空间

时间 与 空间 效率有时候是矛盾的

算法运行时间 = 每条语句频度 * 该语句执行一次所需时间

image.png把算法所耗费的时间定义为该算法中每条语句的频度之和,则上述算法的时间消耗T(n)为
4、算法和算法分析 - 图7
算法的渐进时间复杂度:4、算法和算法分析 - 图8

比较不同的算法时间效率,比较它们的数量级
两个不同的算法,时间消耗分别是 4、算法和算法分析 - 图9 T2时间消耗比较大

算法时间复杂度的渐进表达式

image.png

算法时间复杂度定义

image.png
image.png