二分算法的总结
b为目标值。
1:找到目标值(最左端)
int l=0,r=a-1;
while(l<r)
{
int mid=l+r>>1;
if(s[mid]>=b) r=mid;
else l=mid+1;
}
2:找到目标值(最右端)
int l=0,r=a-1;
while(l<r)
{
int mid=(l+r)>>1;
if(s[mid]<=b) l=mid;
else r=mid-1;
}
3:找到比目标值小里面的最大值
int l=0,r=a-1;
while(l<r)
{
int mid=l+r>>1;
if(s[mid]>b) r=mid;
else l=mid+1;
}
4:找到比目标值大的最小的数
int l=0,r=a-1;
while(l<r)
{
int mid=(l+r)>>1;
if(s[mid]<b) l=mid;
else r=mid-1;
}