二分查找 : 给定一个目标值 target ,在一个有序数组中找到他的下标位置, 我们可以直接遍历数组,找到与目标值的位置,时间复杂度为O(n) 换一种思路,我们首先找到数组的中间位置mid , 判断mid与target的大小关系,因为数组是有序的, 所以若,mid>target 则 target在mid的左半区,反之在mid的右半区, 我们按此思路不断调整区间,最终找到target所在位置, 这种方法的时间复杂度可以达到O(logn) 这就是二分查找。图解 来道题
力扣:二分查找
附个题解class Solution {
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length-1;
if(nums[0]==target){
return 0;
}
while(left < right){
int mid = right - left;
if(nums[mid] == target){
return mid;
}
else if (nums[mid] > target){
right = mid -1;
}else {
left = mid;
}
}
return -1;
}
}



