一,求数列最中间数的三种方法
方法一:=(L+R)/2——可能溢出
方法二:=L+(R-L)/2
方法三:=L+((R-L)>>1)——右移一位比除2快
二,求数组中最大值(以方法三示例):
int process(int arr[],int l,int r)
{
if (r == l)
{
return arr[l];
}
int mid = l + ((r - l) >>1 );
int lmax = process(arr, l, mid);
int rmax = process(arr, mid+1, r);
return (lmax > rmax) ? lmax : rmax;
}
int getmax(int arr[],int len)
{
return process(arr, 0, len-1);
}