#include <stdio.h>
#define MAX(a,b) (a > b ? a : b)
#define MIN(a,b) (a < b ? a : b)
void get_min_max(int a[],int *max,int *min,int left,int right);
void get_min_max(int a[],int *max,int *min,int left,int right)
{
if(a == NULL || left > right){
return ;
}
if(left == right){
*max = MAX(*max,a[left]);
*min = MIN(*min,a[left]);
return ;
}
else if(right-left == 1){
if(a[right] > a[left]){
*max = MAX(*max,a[right]);
*min = MIN(*min,a[left]);
return ;
}
else{
*max = MAX(*max,a[left]);
*min = MIN(*min,a[right]);
return ;
}
}
get_min_max(a,max,min,left,(left+right)/2);
get_min_max(a,max,min,(left+right)/2+1,right);
}
int main(int argc,char *argv[])
{
int a[] = {11,9,20,56,42,3,7,15,16};
int temp1 = a[0];
int temp2 = a[0];
int *max = &temp1;
int *min = &temp2;
get_min_max(a,max,min,0,sizeof(a)/sizeof(a[0])-1);
printf("max = %d min = %d\n",*max,*min);
return 0;
}