#include <stdio.h> void maxmin(int A[],int *e_max,int *e_min,int low,int high) { int mid,x1,x2,y1,y2; int *a,*b,*c,*d; a=&x1;b=&x2;c=&y1;d=&y2; if((high-low<=1)) { if(A[high]>A[low]) { *e_max=A[high]; *e_min=A[low]; } else { *e_max=A[low]; *e_min=A[high]; } } else { mid=(low+high)/2; maxmin(A,a,c,low,mid); maxmin(A,b,d,mid+1,high); *e_max=(*a)>(*b)?(*a):(*b); *e_min=(*c)<(*d)?(*c):(*d); } } int main(int argc, const char * argv[]) { int a[6]={1,2,3,4,5,6}; int max,min; int *p,*q; p=&max; q=&min; maxmin(a,p,q,0,5); printf("最大值为%d,最小值为%d\n",max,min); return 0; }
分治法解最大最小问题
猜你喜欢
转载自blog.csdn.net/qq_31631167/article/details/51178829
今日推荐
周排行