二分法应用在一个顺序不重复数组上寻找特定元素位置的算法。
本质上是通过滑动窗口,不断缩减前后边界,最后逼近该元素的方式来寻找。
写对二分查找不是套模板并往里面填空,需要仔细分析题意 - 搜索插入位置 - 力扣(LeetCode)
所以,我们就要搞清楚数组的边界,最终结果的出现的条件,其他条件。
int search(vector<int>& nums, int target)
{
int left = 0, right = nums.size() - 1;//初始化左右边界
while(left <= right)
{
int mid = (right - left) / 2 + left;
int num = nums[mid];
if (num == target)
{
return mid;
}
else if (num > target)
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
return -1;
}
除了上面最简单的二分法查找,实际上还要面对结果出现的条件,滑动窗口的边界开闭 ,其他条件的干扰deng'den