算法--二分法

119 阅读1分钟
二分法找寻第一次目标数出现位置,找到返回该数组标号,否则返回-1
public int binarySearch(int[] nums, int target) {
        // write your code here
       int low = 0;
       int hight = nums.length-1;
        //设置遍历结束条件
        while(low <= hight){
           int middle = (low+hight)/2;
           if (target < nums[middle]){
               hight=middle-1;
           }
           if (target == nums[middle]){
                   //解决因连续重复目标数造成选择干扰
                   while(low<middle-1&&nums[middle]==nums[middle-1]){
                       middle=middle-1;
                   }
               return middle;
           }
           if (target > nums[middle]){
               low = middle+1;
           }      
        }
        return -1;
    }
}