LeetCode例题: leetcode-cn.com/problems/qu…
二分查找代码大致如下:
int i = 0,
//写成这样,相当于搜索区间为[begin, end],这是一个闭区间
j = nums.length - 1;
//重点: 因为闭区间,所以到了begin等于end时,其实区间内还有一个值要判断,
//因此只begin>end的时候才能停止
while(i<=j){
//位运算,无符号右移一位,同(i+j)/2
int m = (i+j) >> 1;
// 如果下标位置和二分出来的数据一样则位置加+,重新开始计算
if(nums[m] == m){
i = m + 1;
} else {
j = m - 1;
}
}
// 返回对应的下标
return i;