1、根据左端下标(j),右端下标(k),二分计算得到中点元素位置,此位置的元素已经判断过。所以根据判断条件,中点位置左移或右移一个位置,得到新的右端和左端下标。
2、无论二分计算这个过程循环多少次,只要没有查找成功,最终左右下标都会指向同一个元素,即左右下标相同。
3、左右下标相同,再进行循环一次,可得到左端下标大于右端下标,此时不满足循环条件,即查找不成功。所以while(j<=k)循环条件需要取等号。
while(j <= k){
int mid = (j+k)/2;
if(nums[i] > target){
j = mid+1;
}else if(nums[i] < target){
k = mid-1;
}
}