二分法查找改良优化

二分法作为一种常用算法虽然简单,但对于边界的处理是非常复杂的,在稍微复杂一点的问题中一左一右两个指针很容易出现越界或者返回结果错误等情况,这里记录一种二分法的改良写法,可以有效避免越界问题

class Solution {
    public int myBinarySearch(int[] nums, int target) throws Exception{
              int left=0;
              int right=nums.length-1;
              int mid=(left+right)/2;
              while(mid!=left){
                  if(nums[mid]==target)
                      return mid;
                  else if(nums[mid]<target) {
                      left = mid;
                      mid = (left + right) / 2;
                  }
                  else{
                      right=mid;
                      mid = (left + right) / 2;
                  }
              }
              if(nums[left]==target)return left;
              else if(nums[right]==target)return right;
              else {
                  throw new Exception("没有找到该数字");
              }
    }
   
}
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页