分治法求数组最大值

来源:互联网 发布:张惠妹演唱会知乎 编辑:程序博客网 时间:2024/05/21 06:49
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).