您的位置:首页 > 编程语言 > C语言/C++

分治法——查找最大最小元素(C++)

2018-03-17 20:02 190 查看
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
const int N=1000;
int mini,maxi;
int l
;

void maxMin(int i,int j,int &max,int &min);

int main()
{
int n;
cout<<"请输入数组元素个数: ";
cin>>n;
cout<<"请输入"<<n<<"个元素:";
for(int i=0;i<n;i++)
cin>>l[i];
maxMin(0,n-1,maxi,mini);
cout<<"最大元素: "<<maxi<<endl;
cout<<"最小元素: "<<mini<<endl;
return 0;
}

void maxMin(int i,int j,int &max,int &min)
{
int min1,max1;
if(i==j) max=min=l[i];    //表中只有一个元素时
else if(i==j-1)           //表中有两个元素时
if(l[i]<l[j]){
max=l[j];
min=l[i];
}
else
{
max=l[i];
min=l[j];
}
else                      //表中多于两个元素时
{
int m=(i+j)/2;        //对半分割
maxMin(i,m,max,min);  //求前部分子表中的最大、最小值
maxMin(m+1,j,max1,min1);//求后部分子表中的最大、最小值
if(max<max1) max=max1; //两子表最大元的大者为原表最大者
if(min>min1) min=min1; //两子表最小元的小者为原表最小者
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐