1.1 算法的基本概念
首先,要明白软件 = 程序+文档 = 数据结构+算法+文档(图1-1),算法 = 数据对象运算和操作 + 控制结构。算法(Algorithm)的概念在计算机科学领域中几乎无处不在,在各种计算机系统的实现中,算法的设计往往处于核心的位置。计算机的问世是20世纪算法是计算机科学的重要基础,就像算盘一样,人们需要为计算机编制各种各样的“口诀”即算法,才能使其工作。
1-1计算机软件和算法的关系
1.1.1 算法的特征
虽然每天都在和算法打交道,但是能严格地指出什么是算法却不是一件容易的事。算法即在有限步骤内解一个数学问题的过程步骤中常常包括某一操作的重复。更广义地说,一个算法就是解一个问题或实现某一目村的逐步过程。一个算法,就是一个有穷规则的集合,规定了一个解决某特定类型问题的运算序列,此外还应具有如下 5 个重要特性。
1.输入性
一个算法要具有0个或多个外部量作为算法的输入,这些外部量通常体现为算法中的组变量,有些输入量需要在算法执行过程中输入。从表面上看,有些算法好像没有输入量实际上是输入量已被嵌入算法之中。
2.输出性
一个算法必须具有一个或多个输出,以反映算法对输入数据加工后的结果,没有输出的算法是毫无意义的。
3.确定性
算法的每一个步骤必须具有确定的定义,即每一步要执行的动作是确定的,是无二义性的。在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入得出的输出结果也是相同的。
4.有穷性
对于任何合法的输入值,算法必须在执行有限个步骤之后结束,并且每一步都可以在有限的时间内完成。
5.可行性
算法中描述的操作都可以通过已经实现的基本运算的有限次执行来实现,即算法的具体实现应该能够被计算机执行。
1.1.2 算法的 4个标准
计算学科则把问题作为自己的研究对象,用计算机来解决问题。在计算机专家的头脑中,世界是一个个要解决的问题集合。假如如下分段函数,要求对用户输入的一个自变量 x 的值,给出相应的函数值。
实现分段函数求值功能的过程可以作以下描述。
- 输入自变量x的值。
- 依据自变量 x 的值进行判断: