#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,56,42,3,7,15,16 };
int m_x = 0;
int m_i = 0;
divide_and_conquer(a, 0, 8, &m_x, &m_i);
cout << "最大值为:" << m_x << endl;
cout << "最小值为:" << m_i << endl;
return 0;
}