思路:找到一个元素之后,先保留当前元素的索引,继续缩小左侧边界,
即
high=mid-1;
具体代码如下
public static int binarsrarch(int []arr,int key){
//候选索引
int candidate=-1;
int low=0;
int high=arr.length-1;
while(low<=high){
//把除二改成右移,是为了防止数据过大,超过java能显示的最大数
int mid=(low+high)>>>1;
if(key<arr[mid]){
high=mid-1;
} else if (arr[mid]<key) {
low=mid+1;
}
else{
candidate=mid;
//继续缩小左侧边界
high=mid-1;
//如果要找最右侧,只需要扩大左侧边界
//low=mid+1;
}
}
return candidate;
}