算法(algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列。
一个算法应该具有以下5个重要的特性。
(1) 有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,旦每 一步都町在有穷时间内完成。任何不会终止的算法都是没有意义的。
(2) 确定性:对于每种情况下执行的操作在算法中都有确切的规定,使算法的执行者 或阅读者都能明确其含义及如何执行,并且在任何条件下算法都只有一条执行路径,即对于
相同的输入只能得出相同的输出,不能有二义性。
(3)可行性
也就是说算法中的每一个动作能够被机械地执行。像前面求最大公约数的算法 中,每一个操作都是基本操作,都可以用纸和笔在有限时间内完成。
(4)有输入:作为算法加工对象的量值,通常体现为算法中的一组变量。一个算法有
零个或者多个输入。
(5)有输出:一组与•'输入”有确定对应关系的量值,是算法进行信息加工后得到的结 果,这种确定关系即为算法的功能。一个算法有一个或者多个输出。
说明:算法和程序是有区别的,程序是指使用某种计算机语言对一个算法的具体实现, 即具体要怎么做,而算法侧重于对解决问题的方法描述,即要做什么。算法必须满足有穷 性,而程序不一定满足有穷性,如 Windows操作系统在用户没有退出、硬件不出现故障以及 不断电的条件下理论上可以无限时运行,所以严格地讲算法和程序是两个不同的概念。
成其功能,也就是说算法中的每一个动作能够被机械地执行。像前面求最大公约数的算法 中,每一个操作都是基本操作,都可以用纸和笔在有限时间内完成。
(4)有输入:作为算法加工对象的量值,通常体现为算法中的一组变量。一个算法有
零个或者多个输入。
(5)有输出:一组与•'输入”有确定对应关系的量值,是算法进行信息加工后得到的结 果,这种确定关系即为算法的功能。一个算法有一个或者多个输出。
说明:算法和程序是有区别的,程序是指使用某种计算机语言对一个算法的具体实现, 即具体要怎么做,而算法侧重于对解决问题的方法描述,即要做什么。算法必须满足有穷 性,而程序不一定满足有穷性,如 Windows操作系统在用户没有退出、硬件不出现故障以及 不断电的条件下理论上可以无限时运行,所以严格地讲算法和程序是两个不同的概念。