实现功能
在一组数组中用二分法查找到对应的值
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
代码实现
nums:是指整形有序(升序)的数组
target:指目标值
m:指中间值
class Solution {
public int search(int[] nums, int target) {
int left=0;
int right=nums.length-1;
//[left,right]指数组的查找范围
int m; //定义中间值及数组中某个值的下标
while(left<=right){
m = (right - left) / 2 + left; //求中间值,注意(left+right)/2可能存在溢出的情况
//也可以使用m = (left + right) >>1正数右移运算相当于除二
if(nums[m] == target){ //找到了数组中对应的值,返回下标
return m;
}else if(nums[m] >target){ //找到的值大于要搜索的值,则减,小,则加
right =m-1;
} else{
left=m+1;
}
}
return -1;
}
}
参数讲解
刷题链接:https://leetcode.cn/problems/binary-search/solution/er-fen-cha-zhao-by-leetcode-solution-f0xw/