伪·从零开始学算法 - 2.1 - 求一组数的最值

这一章开始,我们开始介绍一些算法的案例。

简介

求一组数的最值(包括最大值和最小值)算是入门级的难度。

我们通常的做法是:判断第二个数是否比第一个数大/小,如果是,记下第二个数作为最值;否则,记下第一个数作为最值。从第三个数开始,判断它是否比记下的最值大/小,如果是,记下这个数作为新的最值。此循环到最后一个数结束。最终记下的数即为最值。

流程图如下:

计算最大值

计算最小值

对于固定个数

一般来说,计算机的输入是机械化的,在算法给定的情况下,一般只能输入固定个数。

如果是两个数之间的最值的话,算法就很简单:

计算两个数的最值

三个数的话:

计算三个数的最值

更多的数请参照之前的方法。

输入任意多个数

对于无法直接输入任意多个数的编程语言,其实稍微变通,也可以输入任意多个数。

我们可以先输入要输入的数字的个数,再通过循环来对数字进行运算,如图:

输入任意多个数

我们以求最大值为例:

求最大值-输入任意多个数

注意其中“输入 ”之后的两个判断,虽然“是”分支的处理相同,但是不能合并,因为在判断“”的时候, 变量未定义,如果合并,程序会出错。

补充

事实上,很多编程语言都有最值的函数,可以直接调用。但是,我希望能够通过简单的算法案例,来加深对算法的认识。在以后的学习中也是这样。

而且,在实际应用中,我们需要考虑的情况还有错误的输入:输入值不是数字怎么办?输入值为空怎么办?……这就需要对输入值预先进行检查。本系列由于方便原因不做考虑,但是实际应用中还要注意。