C++ 二分法查找一个非降序序列中是否存在目标值
bool divide_search(vector<int> nums, int target) {
int l = 0;
int r = nums.size() - 1;
int mid;
while(l <= r){ //不能写作while(l < r) 因为序列中如果存在重复值 且正好在最后一次迭代的位置 没有=就会忽略掉 如果这里不写= 可以用下面的方式
mid = l + (r - l)/2; //不能写作(l + r)/2; 因为有时候相加会溢出
if(nums[mid] == target)
return true;
else if(nums[mid] < target)
l = mid+1;
else if(nums[mid] > target)
r = mid;
}
return false;
}
while里面不写=的写法:
bool divide_search(vector<int> nums, int target) {
int l = 0;
int r = nums.size() - 1;
int mid;
while(l < r){ //如果这里不写=
mid &#