二分查找又名折半查找,就是每次缩小“一半”的查找距离
首先设定左右边界,左边界为-1,右边界为n
再去mid值,即数组中间位置元素,左右边界相加除以2并向下取整
我们将mid值和目标值target作比较,根据大小移动left值或right值
如果target值存在于数组中,那一定是某一个mid值
int binary_search(int nums[], int len, int target)
{
int left = -1, right = len, mid = 0;
while (right - left != 1)
{
mid = (right + left) / 2;
if (nums[mid] > target)
{
right = mid;
}
else if (nums[mid] < target)
{
left = mid;
}
else
{
return mid;
}
}
return -1;
}
ps:后续还有扩展的问题