二分法查找条件
(1)数组为有序数组,(2)数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件
数组区间左闭右闭时
class Solution {
public:
int search(vector<int>& nums, int target)
{
// 定义左右区间
int left=0;
int right=nums.size()-1;
while(left<=right) //左闭右闭时是<=,左闭右开是<
{
int middle=left+((right-left)/2); //防止溢出
if(nums[middle]>target)
right=middle-1; //左闭右开时riddle=middle
else if(nums[middle]<target)
left=middle+1;
else
return middle;
}
return -1;
}
};