您的位置:首页 > 其它

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

2010-08-10 15:19 211 查看
#include<iostream>
using namespace std;
//分而治之法求数组中的最大最小元素
void maxmin(int i,int j,int A[],int& fmax,int& fmin);
int main(){
int A[]={2,5,2,4,7,3,10,9,3};
int max,min;
maxmin(0,8,A,max,min);
cout<<max<<" "<<min<<endl;
int i;
cin>>i;
return 0;
}
//i为要求的下界
//j为求解的上界
void maxmin(int i,int j,int A[],int& fmax,int& fmin){
//int i=0;
//int j=n-1;
int max1,max2,min1,min2;
int mid=(i+j)/2;
if(i==j) {fmax=A[i];fmin=A[i];}
else if(i==j-1){
if(A[i]<=A[j]){fmin=A[i];fmax=A[j]; }
else {fmin=A[i];fmax=A[j];}
}
else {
maxmin(mid+1,j,A,max1,min1);
maxmin(i,mid,A,max2,min2);
fmax=max(max1,max2);
fmin=min(min1,min2);
}

}


本文出自 “codeland” 博客,请务必保留此出处http://aaronz.blog.51cto.com/1209743/371385
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐