题解 | 二分查找-I
二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param numsLen int nums数组长度
* @param target int整型
* @return int整型
*/
int search(int* nums, int numsLen, int target ) {
// write code here
int left, right, middle;
left = 0; right = numsLen;
while(left <= right){
middle = (left + right) / 2;
if (nums[middle] == target)
return middle;
else if (nums[middle] > target){
right = middle - 1;
}else {
left = middle + 1;
}
}
return -1;
}
去数组中间的值为mid。
如果mid>target,那么target肯定在左半边,所以需要调整右侧边界,right=mid-1
如果mid<target,那么target肯定在右半边,所以需要调整左侧边界,left=mid+1
不断逼近,最终找到或者找不到。