二分查找
一、代码思路:
1.选取两个下标left和right,每次循环得mid中间值,目的在每次循环时可以把数组分为两段实现二分查找。
2.若mid所指数值大于target目标值则移动right = mid-1;反之移动left = mid+1;
3.每次循环比较mid所指值,若相等直接返回下标,确定循环条件为left>=mid(代表还为搜索完整个数组)
4.若搜索完整个数组,未返回下标值,则直接return -1
二、具体代码:
class Solution {
public int search(int[] nums, int target) {
//设置俩下标left和right,找出中间mid
//选择mid比较值决定,移动left或right,直至left<=right结束
int left = 0;
int right = nums.length-1;
while(left<=right){ //循环条件
int mid = (left+right)/2;
if(target==nums[mid]){ //==与=的区别
return mid;
}else if(target>=nums[mid]){
left = mid+1;
}else{
right = mid-1;
}
}
return -1; //循环结束没找到返回-1
}
}
/**
mid每次循环时都会改变,故应放在循环体内部
下标从0开始,故right为数组长度-1
*/
三、注意事项
1.mid每次循环时都会改变,故应放在循环体内部
2.下标从0开始,故right为数组长度-1
3.==与=的区别,判断条件时
4.循环结束没找到返回-1,无需判断left>right,若找到在上面已经return了

浙公网安备 33010602011771号