美文网首页
二分查找

二分查找

作者: Mervyn_2014 | 来源:发表于2017-12-01 11:54 被阅读5次
 /**
     * 元素空间没有重复值
     * 二分查找主要有几个关键点,1中值算法,2结束点即当low>high结束
     */
    public static int binarySearch(int[] nums,int target){
        int low = 0;
        int high = nums.length-1;
        while (low<=high){
            int mid = low+(high-low)/2; //中值不能使用(low+high)/2,因为low+high 可能大于Integer.MAX_VALUE
            if(nums[mid]>target){
                high = mid -1;
            }else if(nums[mid]<target){
                low = mid +1;
            }else{
                return mid;
            }
        }
        return -1;
    }
     /**
     * 二分查找使用递归
     * @param nums
     * @param target
     * @param low
     * @param high
     * @return
     */
    public static int binarySearchRecur(int[] nums,int target,int low,int high){
        if(low>high){
            return -1;
        }
        int mid = low +(high-low)/2;
        if(nums[mid]>target){
            return binarySearchRecur(nums,target,low,mid-1);
        }else if(nums[mid]<target){
            return binarySearchRecur(nums,target,mid+1,high);
        }else{
            return mid;
        }
    }

相关文章

网友评论

      本文标题:二分查找

      本文链接:https://www.haomeiwen.com/subject/xtnibxtx.html