目录
八、算法
8.1 概念
8.1.1 非正式定义
算法的一种非正式概念如下:算法是一种逐步解决问题或完成任务的方法。
按照这种定义,算法完全独立于计算机系统。算法需要一组输入数据,并产生一组输出数据。
8.1.2 示例
现在我们要得到一组输入数据(都是整数)里的最大值,为了方便分析算法,我们假设要找到五个输入数据里的最大值,显然这个任务不可能一步完成,根据小学的数学知识,这个算法可以用以下几步实现:
首先检查第一个整数,由于还没有检查其他整数,所以将最大值设为12;
检查第二个数,发现8小于12,所以最大值仍为12;
检查第三个数,发现13大于12,所以最大值变为13;
检查第四个数,发现9小于13,最大值不变;
检查第五个数,发现11小于13,最大值不变。
经过五个步骤就可以得出这组数中的最大值为13.
8.1.3 定义动作
将上述五个步骤定义为五个动作,通过算法中的这五个动作就可以找到数据中的最大值。
8.1.4 细化
为了使算法能在所有的程序中使用,还需要进行细化。现在有两个问题:第一步中的动作和其他步不一样;第二步到第五步中的程序描述语言不同。对动作进行改进后可以得到:
8.1.5 泛化
将这个算法推广到 个数中找最大值,只要让计算机循环步骤一
次。
8.2 三种结构
计算机专家为结构化程序或算法定义了三种结构。这种想法认为程序必定是由顺序、判断(选择)、循环三种结构组成的,已经证实其他结构都是不必要的。仅仅使用这三种结构就可以使程序或算法容易理解、调试或修改。
8.2.1 顺序
第一个结构称为顺序结构。算法(最终是程序)都是指令序列,可以是简单指令或是其他两种结构之一。
8.2.2 判断
有些问题只用简单指令是无法解决的。有时候需要检测一个条件,当这个条件满足时执行一系列操作;这个条件不满足时执行另外一系列操作。这就是判断(选择)结构。
8.2.3 循环
在有些问题中,相同的指令需要重复,可以使用循环结构来解决这个问题。