#include<iostream>
using namespace std;
//[) 左闭右开
int findMax(int a[],int l,int r)
{
int x;
int m=l+(r-l)/2; //防止过大溢出
if(r-l==1)return a[l]; //只有一个元素
else
{
//分治法
int u=findMax(a,l,m);
int v=findMax(a,m,r);
x=max(u,v);
}
return x;
}
int main()
{
int N=10;
int a[N]= {1,2,3,4,5,6,7,8,9,10};
cout<<findMax(a,0,N)<<endl;
a[0]=100;
cout<<findMax(a,0,N)<<endl;
a[4]=200;
cout<<findMax(a,0,N)<<endl;
a[5]=300;
cout<<findMax(a,0,N)<<endl;
a[6]=400;
cout<<findMax(a,0,N)<<endl;
return 0;
}
运行结果:


2801

被折叠的 条评论
为什么被折叠?



