算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。不同的算法可能用不同的时间、空间或效率来完成同样的任务,也就是它们的空间复杂度与时间复杂度可以,但是算法必须要有算法的5种基本特征。
1.有穷性(Finiteness)
算法的有穷性是指算法必须能在执行有限个步骤之后终止。这一点很好理解,倘若一个算法需要执行无限个步骤而得不出结果,那么这个算法是毫无意义的。除此之外,也是避免了算法陷入死循环中,这样也是毫无意义的。比如下面的例子:
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);
}
2.确切性(Definiteness)
一个算法的每一步骤必须有确切的定义。对于每一种情况,需要执行的动作都应严格地、清晰地规定。这从很大程度上增强了算法的严谨性,本身算法的定义中,算法是一系列解决问题的清晰指令,每一步都是有意义的。
3.输入(Input)
一个算法有零个或多个输入,以刻画运算对象的初始情况,所谓零个输入是指算法本身给定了初始条件。这些输入取自于特定的对象的集合。它们可以使用输入语句由外部提供,也可以使用赋值语句在算法内给定。
4.输出(Output):
一个算法有一个或多个输出。算法本身就是为了解决问题得到答案的,所以,没有输出的算法毫无意义。
5.可行性(Effectiveness)
一个算法的任何计算步骤都是可以被分解为基本可执行的操作,每个操作都能够在有限时间内完成。
算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。但不管怎样,算法本身还是要满足上述的算法的5个基本特征的,包括随机化算法在内的一些算法,都必须包含了一些随机输入。快来本站的数据结构与算法教程学习各种各样的算法,解决各种疑难问题吧。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习