算法特征
运行于计算机的各种算法有如下特征。
- 输入:算法从一个指定集合得到输入值,可以有0个、1个或多个值,由赋值或输入语句实现;
- 输出:对每个输入值,算法都要从指定的集合中产生输出值,输出值就是问题的解,可以有1个或多个输出值,由输出语句实现;
- 确定性:算法的步骤必须准确定义,不能产生歧义;
- 正确性:对每一次输入值,算法都应产生正确的输出值;
- 有限性:对任何输入,算法都应在有限步骤之后产生输出;
- 有效性:算法每一步必须能够准确地执行,并在有限时间内完成;
- 通用性:算法不只是用于特定的输入值,应该可以用于满足条件的所有问题。* 输出:对每个输入值,算法都要从指定的集合中产生输出值,输出值就是问题的解,可以有1个或多个输出值,由输出语句实现;
- 确定性:算法的步骤必须准确定义,不能产生歧义;
- 正确性:对每一次输入值,算法都应产生正确的输出值;
- 有限性:对任何输入,算法都应在有限步骤之后产生输出;
- 有效性:算法每一步必须能够准确地执行,并在有限时间内完成;
- 通用性:算法不只是用于特定的输入值,应该可以用于满足条件的所有问题。
例1.1 找出计算机软件专业录取的新生中高考总分的最高分。
分析:这个问题等价于求有限整数序列中最大值的算法,可采取以下步骤。
- 将序列中第一个整数设为临时最大值max ;
- 将序列中下一个整数与临时最大值比较,如果这个数大于临时最大值,临时最大值更新为这个整数;
- 重复第2步,一直比较到序列中最后一个数时停止。此时临时最大值就是序列中的最大整数。
- 在此算法中,输入是软件专业所有新生的高考成绩,输出是高考最高分,算法过程从序列第一项开始,并把序列第一项设为临时最大值的初始值,接着逐项检查,如果有一项超过最大值,就把最大值更新为这一项的值,检查到序列的最后一项结束。
算法每进行一步,要么是比较最大值和这项的大小,要么是更新最大值的值,所以每一步的操作都是确定的,能保证最大值是已检查过的最大整数,结果是正确的。如果序列包含 n 个整数,经过 n-1次比较就结束,所以算法步骤是有限的、有效的。这个算法可以用于求任何有限整数序列问题的最大元素,所以它是通用的。
算法包含三种基本逻辑结构:
顺序结构、条件结构和循环结构。任何由计算机程序处理的问题都可以表示为基本结构或基本结构的组合。
循环结构
在一些算法中,会出现从某处开始,按照一定条件,反复执行某一步骤,这就是循环结构。反复执行的步骤称为循环体。
- 循环结构有三个要素:循环变量、循环体和循环终止条件。
循环结构必然包含条件结构,循环结构在程序框图中利用判断框来表示,判断框内写条件,两个出口分别对应着条件成立和条件不成立时所执行的不同指令,其中一个要指向循环体,然后再从循环体回到判断框的入口处。 - 循环结构有两种类型:当型和直到型。
- 当型结构指当条件满足时,反复执行循环体,不满足则停止。
- 直到型结构指在执行了一次循环体之后,对控制循环条件进行判断,当条件不满足时执行循环体,满足为止。
常按照“确定循环体→初始化变量→设定循环终止条件”的顺序来构造循环结构。
实践1.1
设计一个求解一元二次方程\(ax^2+bx+c=0\)的算法。
算法分析:我们知道,根据判别式\(Δ=b^2−4ac\)的符号,一元二次方程\(ax^2+bx+c=0\)的解有三种情况,所以,在求解方程前要先判断判别式的符号,然后执行不同的计算。
- 第一步:输入三个系数a、b、c;
- 第二步:计算\(Δ=b^2−4ac\)的值;
- 第三步:判断是否成立Δ≥0,若是,则计算\(p=-{b \over 2a},q=\frac {\sqrt{Δ}} {2a}\),进入第四步;若否,输出“方程没有实数根”。
- 第四步:判断Δ=0,若是,则输出x= p;若否,计算\(x_1= p+q\),\(x_2= p−q\),并输出\(x_1\)、\(x_2\),结束。

浙公网安备 33010602011771号