#include <iostream>
using namespace std;
void divide_and_conquer(int a[],int begin,int end,int *max_value,int *min_value)
{
if(end - begin <= 1)
{
if(a[begin] > a[end])
{
*max_value = a[begin];
*min_value = a[end];
return;
}
else
{
*max_value = a[end];
*min_value = a[begin];
return;
}
}
int mid = (begin + end) / 2;
int min1,min2,max1,max2;
divide_and_conquer(a,begin,mid,&max1,&min1);
divide_and_conquer(a,mid+1,end,&max2,&min2);
*max_value = max1 > max2 ? max1 : max2;
*min_value = min1 < min2 ? min1 :min2;
}
int main()
{
int a[] = {11,9,20,52,42,3,7,15,16};
int m_x = 0;
int m_i = 0;
divide_and_conquer(a,0,10,&m_x,&m_i);
cout<<"最大值为:"<<m_x<<endl;
cout<<"最小值为:"<<m_i<<endl;
return 0;
}