算法和算法分析
算法的特征
- 有穷性:一个算法必须总是(对于任何合法的输入值)在执行有穷步之后结束,且每一步都在有穷时间内完成。
- 确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。并且,在任何条件,算法只有唯一的一条执行路径,及对于相同的输入只能得出相同的输出。
- 可行性:一个算法是能行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次实现的。
- 输入:一个算法有零个或者多个输入,这些输入取自于某个特定的对象的集合。
- 输出:一个算法有一个或多个的输出,这些输出是同输入有这某些特定关系的量。
- 正确性:算法应当满足具体问题的·需求。
算法的设计要求
a) 程序不含语法错误
b) 程序对于几组输入数据能够的出满足规格说明要求的结果。
c) 程序对于精心选择的典型,苛刻而带有刁难性的几组输入数据能够得出满足规格说明要求的结果。
d) 程序对于一切合法的输入数据都能产生满足规格说明要求的结果。
- 可读性:算法主要是为了人的阅读与交流,其次才是机器执行。可读性好有助于人对算法的理解。
- 健壮性:当输入数据非法时,算法也能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。
- 效率与低存储率需求:通俗地说,效率指的是算法执行的时间。
- 时间复杂度
算法的效率度量
时间度量:已基本操作重复执行的次数作为算法的时间度量。
(通常的做法是,从算法中选取一种对于所研究的问题来说是基本操作的原操作)
语句的频度:该语句重复执行的次数。
T(n)=O(f(n))【与循环次数有关】
空间复杂度
S(n)=O(f(n)) 【与辅助变量有关】
原地工作:若额外空间相对于输入数据量来说是常数,则称此算法为原地工作

浙公网安备 33010602011771号