#include <iostream>
using namespace std;
void FindMaxAndMin(int a[], int begin, int end, int* pmax, int* pmin)
{
if(end-begin <=1)
{
if(a[begin] <= a[end])
{
*pmax = a[end];
*pmin = a[begin];
return;
}
else
{
*pmin = a[end];
*pmax = a[begin];
return;
}
}
int min1, min2, max1, max2;
int mid = (begin+end)/2;
FindMaxAndMin(a, begin, mid, &max1, &min1);
FindMaxAndMin(a, mid+1, end, &max2, &min2);
*pmin = min1 < min2 ? min1 : min2;
*pmax = max1 < max2 ? max2 : max1;
}
int main()
{
int a[] = {11, 9, 20, 56, 42, 3, 7,15,16};
int max, min;
FindMaxAndMin(a, 0, 8, &max, &min);
cout<<"the max num is: "<<max<<"\nthe min num is: "<<min<<endl;
return 0;
}