第一种
左闭右闭区间,区间内的每一个值都有效。
while条件为(left <= right)
代码:
int left = 0;
int right = nums.length-1;
while(left <= right){
//左闭右闭区间,所有值都有效
int mid = (left + right)/2;
if(target == nums[mid]){
return mid;
}
if(nums[mid] < target){
left = mid+1;
}
if(nums[mid] > target){
right = mid-1;
}
}
return -1;
}
第二种
int left = 0;
//这里right所指向的值任何时候都是无效的,不是我们寻找的区间
int right = nums.length;
while(left < right){
//左闭右开区间,所有值都有效
int mid = (left + right)/2;
if(target == nums[mid]){
return mid;
}
if(nums[mid] < target){
left = mid+1;
}
if(nums[mid] > target){
//右边这个是没用的,这个你晓得吧
right = mid;
}
}
return -1;
}