欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

二分法查找

最编程 2024-07-07 10:10:06
...

二分法查找的思路比较容易理解,主要是在边界处理上会有一些问题。如果我们定义的时左开右开的区间,那么l=r时是可以成立的。如果中值大于目标值 ,那么目标值在左区间,r=m-1。如果中值小于目标值,目标值在右区间。l=m+1。

int dichotomySearch01(int [] nums,int target){
         int l = 0,r = nums.length-1,m = l+(r-l)/2;
         while (l<=r){
             if(target<nums[m]){
                 r = m-1;//如果中值大于目标值 目标值在左区间
                 m = (r-l)/2;
             }
             else if (target>nums[m]){
                 l = m+1;//如果中值小于目标值 目标值在右区间
                 m = l+(r-l)/2;
             }else {
                 return m;
             }
         }
         return -1;
     }