算法的定义
通常,定义算法为"为解决某一特定任务而规定的一个指令序列"。
算法的5个基本特性
① 有输入。一个算法必须有0个或多个输入。它们是算法开始运算前给予算法的量。这些输入取自于特定的对象的集合。它们可以使用输入语句由外部提供,也可以使用赋值语句在算法内给定。
② 有输出。一个算法应有一个或多个输出,输出的量是算法计算的结果。
③ 确定性。算法的每一步都应确切地、无歧义地定义。对于每一种情况,需要执行的动作都应严格地、清晰地规定。
例1:
void fa( )
{
int x=5,y=10;
z=x+++y;//解释为:x+(++y)?(x++)+y?
printf("%d,%d,%d",x,y,z);
}
void fb( )
{
int x=5,y=10;
z=x+(++y); //x+++y解释为:x+(++y)
printf("%d,%d,%d",x,y,z);
}
void fc( )
{
int x=5,y=10;
z=(x++)+y; //x+++y解释为:(x++)+y
printf("%d,%d,%d",x,y,z);
}
④ 有穷性。一个算法无论在什么情况下都应在执行有穷步后结束。
例2:
void fa( )
{
int i=0,s=0;
while(i<10) //死循环
s++; //不满足有穷性
i++;
printf(“s=%d,i=%d\n“,s,i);
}
void fb( )
{
int i=0,s=0;
while(i<10) //i<10执行多少次
{
s++; //s++执行?次
i++; // i++ 执行?次
}
printf(“s=%d,i=%d\n“,s,i);
}
⑤ 有效性。算法中每一条运算都必须是足够基本的。就是说,它们原则上都能精确地执行,甚至人们仅用笔和纸做有限次运算就能完成。
例3:
求和:S=1+2+3+...+∽ //不可以实现。
算法设计的要求
1)正确性
a.无语法错误;
b.对n组输入产生正确结果;
c.对特殊输入产生正确结果;
d.对所有输入产生正确结果。
2)可读性:“算法主要是为了人的阅读与交流”。
3)健壮性
4)高效与低存储量
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=16