int DividedAndConquerForMax(int a[],int p,int q,int& max)
{
if(p<q) //p、q为首尾元素的下标
{
int r;
r=(p+q)/2;
int maxl=a[p];
int maxr=a[r+1];
DividedAndConquerForMax(a,p,r,maxl);
DividedAndConquerForMax(a,r+1,q,maxr);
max=maxl>maxr?maxl:maxr;
std::cout<<'p='<<p<<' r='<<r<<' q='<<q<<'\t'<<'max='<<max<<'\n';
}
return max;
}
时间复杂度为O((q-p-1)-1).
分治法求数组最大值
最新推荐文章于 2022-04-13 22:26:53 发布