分治法主要有三个步骤:
1.分解:将原问题划分为规模较小的几个子问题。
2.求解:子问题小到可以求解了,就去求解。
3.合并:将子问题的解合并为原问题的解。
模拟过程如下:
对于本问题就是不断地进行二分,直到分解为不可分的一个数组元素,这个数组元素是最小子问题的最大值也是最小值,之后再逐一合并为原问题的解。
完整代码:
#include <iostream>
using namespace std;
#define inf 0x3f3f3f3f
void divideMaxMin(int a[], int left, int right, int *max, int *min){
int lmax = 0, rmax = 0, lmin = inf, rmin = inf;
if(left == right){
*max = a[left];
*min = a[right];
return ;