找到小于键值的最大值
int binSearch(int l,int r,int key){
int tl=l-1;
int tr=r+1;
while(tr-tl>1){
int mid=(tl+tr)/2;
if(a[mid]>=k)
tr=mid;
else
tl=mid;
}
return tl;
}
两个关键点:1. 等号落在左边还是右边。2. tl∈[tl,tr),tr∈(tl,tr] 所以为了tl或tr能取到边界值,开始对tl,tr相应减(加)一。