现实中解决问题时,一般都要制定一个针对具体问题的解决步骤和方法,以此为据去实现目标。将为了解决问题所制定的步骤、方法称为算法(Algorithm)。
尽管算法因求解问题的不同而千变万化、简繁各异,但应该具有以下5个重要的特征。
算法中所包含的步骤必须是有限的,不能无穷无止,应该在一个人所能接受的合理时间段内产生结果。如果让计算机执行一个历时 1000 年才结束的算法,虽然是有限的,但超过了合理的限度,人们也不把它视为有效算法。
究竟什么算“合理时间”并无严格的标准,由人们的常识和需要而定。
算法中的每一步所要实现的操作必须是明确无误的,不能有二义性。例如,要把全班同学分成两队,“高个子的同学站出来”这个步骤就是不确定的、含糊的,哪些同学算高,哪些同学算矮?个子中等的同学就会不知是否应该站出来。
算法中的每一步如果被执行了,就必须被有效地执行。例如,计算 X 除以 Y,如果 Y 为非 0 值,则这一步可以有效执行;但如果 Y 为 0 值,则这一步就无法得到有效的执行。
根据算法的不同,有的在实现过程中需要输入一些原始数据,而有些算法可能不需要输入原始数据,求 5! 就不需要任何输入。所谓多个输入,就是需要输入多个数据。比如求两个整数 M 和 N 的最大公约数,就需要输入 M 和 N 的值。
设计算法的最终目的是解决问题,因此,每个算法至少应有一个输出结果来反映问题的最终结果。没有输出的算法是没有意义的。