分治法求数组最大值 数组长度为N 一部分为2^((lgN)-1) 其中lgN取下取整,另一部分为N-K
int aMax[12] = {2,4,1,10,5,3,7,21,20,10,2,30};
int divideMax(int low,int high)
{
int u,v;
int m;
//int m = (low + high)/2;
m = ceil(log(low+high)-1);
m = powl(2, m);
if (low == high)
{
return aMax[low];
}
else if(abs(low - high) >= 1)
{
m = low;
}
u = divideMax(low, m);
v = divideMax(m+1, high);
if (u > v)
{
return u;
}
else
{
return v;
}
}