程序中,我们经常使用数组(列表)存储给定的线性序列(例如 {1,2,3,4}),那么如何查找数组(序列)中的最大值或者最小值呢?
查找数组(序列)中最大值或最小值的算法有很多,接下来我们以 {3,7,2,1} 序列为例讲解两种查找最值的算法,一种是普通算法,另一种是借助分治算法解决。
普通算法
普通算法的解决思路是:创建两个变量 max 和 min 分别记录数组中的最大值和最小值,它们的初始值都是数组中的第一个数字。
从第 2 个数字开始遍历数组,每遇到一个比 max 大的数字,就将它存储到 max 变量中;每遇到一个比 min 小的数字,就将它存储到 min 变量中。直到遍历完整个数组,max 记录的就是数组中的最大值,min 记录的就是数组中的最小值。
下面的动画,演示了找最大值的过程:
数组中找最大值的过程
找最小值的过程和上图类似,这里不再给出具体的动画演示。
—————————————
如下是普通算法对应的伪代码:
输入 num[1...n] // 输入 n 个数字
max <- num[1] // 将第 1 个数字赋值给 max(表示最大值)
min <- num[1] // 将第 1