在数组zu【20】中
初始化:
for(int i=0;i<=20;i++)
zu[i]=i*2;
在zu【1】->zu【20】中查找m
方案 1
int L=1,R=20;
while(L<=R)
{
int mid=(L+R)>>1;
if(m<zu[mid])
R=mid-1;
else
L=mid+1; //当L==R===mid时,R能加加
}
return R;</span>
在已排序的[L,R)中寻找元素m。如果[L, R]具有等价于m的元素,返回等价的最后一个元素的位置(数组下标)。如果没有这样的元素存在,便返回假设这样的元素存在的话,会出现的前一个位置(数组下标)。
方案2
int R=20,L=1;
while(L<=R)
{
int mid=(L+R)>>1;
if(m<=zu[mid]) //当L==R===mid时,L能加加
R=mid-1;
else
L=mid+1;
}
return L;</span>
在已排序的[L,R)中寻找元素m。如果[L, R]具有等价于m的元素,返回等价的第一个元素的位置(数组下标)。如果没有这样的元素存在,便返回假设这样的元素存在的话,会出现的位置(数组下标)。
STL:链接