以下为模板:(笔记)
//整数要处理边界情况
static int x;
static int moban1(int[] arr,int l,int r){//以满足前面区域做划分,即所求的分界点在前面这个区域(若有相同的分界点,则为最后一个)
while (l<r){
int mid=l+r+1>>1;//加1防止进入死循环
if (arr[mid]<=x){
l=mid;
}else{
r=mid-1;
}
}
return l;
}
static int moban2(int[] arr,int l,int r){//以满足后面区域做划分,即所求的分界点在后面这个区域(若有相同的分界点,则为最前面一个)
while(l<r){
int mid = l+r>>1;
if (arr[mid]>=x){
l=mid;
}else{
r=mid+1;
}
}
return l;
}