1. 问题描述:
给定一个数组,分别输出数组中的最大值与最小值。
2. 题解:
(1)蛮力法:
这个问题未免显得过于简单,从n个数中找到最大值或者最小值,只需要比较n-1次即可,因此要想找出最大值和最小值,只需要比较2*(n-1)即2n-2次。但是,是否可以做出优化呢?接下来我们给出只需要比较2n/3 左右即可完成的方法
(2)分治算法
分治算法的核心的将一个规模比较大的问题拆分成一个个小的子问题,如下图所示:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e6fbef4fdeecb63dd2f72f44ef79ccea.png)
当我们将问题拆分成只含有两个元素时,只需要一次比较即可同时得到最大值和最小值,我们来计算一下复杂度:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e1fc438eca160560d1023c33617cbc45.png)
算法: MaxMin(A)