算法即能够对一定规范的输入,在有限时间内获得所要求的输出。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
1、 算法的五个特征:
(1)有穷性
执行程序的运行时间是有限的,能够结束。
(2)确定性
要有明确的定义,不模棱两可。
(3)可行性
能有效地执行,并得到确定的结果。
(4)输入
算法执行时必要的数据,有些情况下,数据已经包含在算法中,算法执行时不需要任何数据,所以一个算法可以有零个或多个输入。
(5)输出
数据通过算法处理后的结果,算法必须要有一个或多个输出,没有输出的算法是毫无意义的。
2、 算法的设计的要求
(1)正确性
没有语法错误,对合法的数据输入能够产生满足要求的输出。
(2)可读性
算法要便于阅读、理解和交流
(3)健壮性
对不规范的输出的应对和处理能力。
(4)效率高和存储量低
执行时间快;占用的空间少。
3、算法的分析
(1)时间复杂度
度量执行时间的长短。算法的时间复杂度是一个函数,它定性描述该算法的运行时间。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。
(2)空间复杂度
度量执行临时占用存储空间大小。记做S(n)=O(f(n))。