分治法求数组中的最大最小元素

 

  
  
  
  
  1. #include<iostream>  
  2. using namespace std;  
  3. //分而治之法求数组中的最大最小元素  
  4. void maxmin(int i,int j,int A[],int& fmax,int& fmin);  
  5. int main(){  
  6.     int A[]={2,5,2,4,7,3,10,9,3};  
  7.     int max,min;  
  8.     maxmin(0,8,A,max,min);  
  9.     cout<<max<<" "<<min<<endl;  
  10.     int i;  
  11.     cin>>i;  
  12.     return 0;  
  13. }  
  14. //i为要求的下界  
  15. //j为求解的上界  
  16. void maxmin(int i,int j,int A[],int& fmax,int& fmin){  
  17.     //int i=0;  
  18.     //int j=n-1;  
  19.     int max1,max2,min1,min2;  
  20.     int mid=(i+j)/2;  
  21.     if(i==j) {fmax=A[i];fmin=A[i];}  
  22.     else if(i==j-1){  
  23.         if(A[i]<=A[j]){fmin=A[i];fmax=A[j]; }  
  24.         else {fmin=A[i];fmax=A[j];}  
  25.     }  
  26.     else {  
  27.         maxmin(mid+1,j,A,max1,min1);  
  28.         maxmin(i,mid,A,max2,min2);  
  29.         fmax=max(max1,max2);  
  30.         fmin=min(min1,min2);  
  31.     }  
  32.  
  33.  

 

你可能感兴趣的:(职场,分治法,休闲,最大最小元素)