编辑代码

#include <iostream>  
using namespace  std;  
#define MAX(a,b)    (a) > (b) ? (a) : (b)  
#define MIN(a,b)    (a) > (b) ? (b) : (a)  

int get_max(int* arr, int left, int right)  
{  
    int maxleft = 0, maxright = 0, mid = 0;  

    if (left == right)            
        return arr[left];  
    else if (left == right-1)     
        return MAX(arr[left], arr[right]);  
    
    mid = (left+right)/2;  
    maxleft = get_max(arr,left,mid);  
    maxright =get_max(arr, mid+1, right);  
    
    return MAX(maxleft, maxright);  

}  

void get_min_max(int* arr, int left, int right, int* min, int * max)  
{  
    int mid = 0;  
    int lmin=0, lmax=0;  
    int rmin=0, rmax=0;  

    if (left == right) {  
        *min = arr[left];  
        *max = arr[left];  
        return;               
    } else if (left == right - 1) {  
        *min = MIN(arr[left], arr[right]);  
        *max = MAX(arr[left], arr[right]);  
        return;              
    }  
    
    mid = (left+right) / 2;  
    
    get_min_max(arr, left, mid, &lmin, &lmax);  
    get_min_max(arr, mid+1, right, &rmin, &rmax);  
    
    *min = MIN(lmin, rmin);  
    *max = MAX(lmax, rmax);  

}  

int main()  
{  
    int min, max;  
    int arr[] = {11, 9, 20, 56, 42, 3, 7,15,16};  
    int len = sizeof(arr)/sizeof(arr[0]);  

    get_max(arr, 0, len-1);  
    get_min_max(arr, 0, len-1, &min, &max);  
    cout<<"max:"<<max<<"min:"<<min;  
    return 0;

}