目录
1 算法的特性
有穷性:一个算法必须总是在执行有穷步骤之后结束,且每一步都在有穷时间内完成。
确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性,并且在任何条件下,算
法只有唯一的一条执行路径。
可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。算法的可行性有两层含义,一是算法中的各个语句是可行的,二是各个可行的语句的有限步骤对解决问题是可行的。
输入:一个算法有零个或多个输入,这些输入取自某个特定的对象的集合。
输出:一个算法有零个或多个输出,这些输出是与输入有某种特定关系的量。
2 算法与程序
例 欧几里得算法
int Euclid(int m,int n) //计算m,n的最大公约数
{
do
{
r=m%n;
m=n;
n=r;
}while(r);
return m;
}
这个算法拿到计算机上调试没有通过,故称为算法。
如果在程序里面加上int r,则称为程序。
2 算法设计的要求
正确性:能够确保对于某种相对程度的随机输入有正确的输出。
可读性:算法描述清晰易懂,便于修改和移植,有利于阅读者对程序的理解。
健壮性:算法应该具有容错处理,当输入非法数据时,算法能适当做出反应或执行处理,而不会产生莫名其妙的输出结果。
效率:效率指的是算法的执行时间。
存储量需求:值算法执行过程中所需要的最大的存储空间。