二分查找

一、代码思路:
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了

posted @ 2024-10-21 10:36  南飞小猪  阅读(9)  评论(0)    收藏  举报