二分查找对于有序的数组是十分好用的查找方法,其使用分治法,将数组一分为二,每次排除一半的元素,复杂度是O(log(n))
一般形态:数组中没有重复元素
【更为详细的版本】
将数组分为
左边一坨 中间元素 右边一坨
0~mid-1 mid mid+1~end
如果中间元素是目标,找到
如果中间元素小于目标,在右边一坨找
如果中间元素大于目标,在左边一坨找
vector<int> nums;
int l = 0;
int r = nums.size()-1;
while(l<=r)
{
int mid = (l+r)/2;
if(nums[mid]==target)
return mid;
else if(nums[mid]<target)
l = mid+1;
else
r =