代码如下
#include<iostream>
#include<vector>
#include<ctime>//随机函数生成随机数
using namespace std;
void max_min(vector<int>v,int left,int right,int max_n,int min_n)
{
if(left == right) //递归终止 只有一个元素
{
max_n = min_n =v[left];
return ;
}
if(left+1 == right)//递归终止 只有两个元素
{
max_n=v[left]>v[right]?v[left]:v[right];
min_n=v[left]<v[right]?v[left]:v[right];
return ;
}
int max1_n,int min1_n,int max2_n,int min2_n;
int mid = (left + right)/2;
max_min(v,left,mid,max1_n,min1_n);
max_min(v,mid + 1,right,max2_n,min2_n);
//合并问题的解
max_n = max1_n > max2_n?max1_n:max2_n;
min_n = min1_n < min2_n?min1_n:min2_n;
return ;
}
int main()
{
srand(unsigned(time(0)));//随机函数生成随机数
vector<int>v;
for(int i = 0;i < 100;i++)
{
v.push_back(rand()/1000000);
count<<v[i]<<" ";
}
cout<<endl;
int max_n,min_n;
max_min(v,0,99,max_n,min_n);
cout<<"最大值"<<max_n<<endl<<"最小值"<<min_n<<endl;
return 0;
}