通常人们将算法定义为一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算系列。
一个算法应当具有以下特性:输入,输出,确定性,有穷性,可行性。
算法的描述有多种方法,如自然语言方式、图形方式、表格方式等,这里用C++程序语言来描述算法。
把一个具体问题的功能需求转变为一个算法,使用的方法是自顶向下、逐步求精的结构化程序设计方法。
通常一个好的算法应达到如下目标:
(1)正确性。算法应满足具体问题的需求,正确反映求解问题对输入输出和加工处理等方面的需求。
(2)可读性。算法除了用于编制程序在计算机上执行之外,另一个重要用处是阅读和交流。可读性好有助于人们对算法的理解,便于算法的交流与推广。
(3)健壮性。当输入数据非法时,算法应能适当的做出反应或进行处理,输出表示错误性质的信息并中止执行。
(4)时间效率和存储占用量。一般来说,求解同一个问题若有多种算法,则执行时间短的算法效率高,占用存储空间少的算法较好。但是算法的时间开销和空间开销往往是相互制约的,对高时间效率和低存储量的要求只能根据问题的性质折衷处理。
这四个目标中对算法在计算机上执行所耗费的时间和所占空间的分析,常常是人们对算法进行评估和选择的重要依据。