【Java】二分搜索

2020-03-27  本文已影响0人  董懂同学
class BinarySearch {
    public static int binarySearch(int[] array, int target){
        
        int l = 0, r = array.length - 1; // 在[l...r]的范围里寻找target
        while (l<=r) { // 当 l == r 时,区间[l,r] 依然是有效的
            int mid  = (l + r) / 2;
//          int mid  = l + ( r - 1 ) / 2; // 避免整型溢出
            if(array[mid] == target){ // 当 array[mid] == target 时,target == l == r
                return mid;
            }
            if(array[mid] < target){ // array[mid] < target,target 在 array[mid] 右边
                l = mid + 1;
            }
            if(array[mid] > target){ // array[mid] > target,target 在 array[mid] 左边
                r = mid - 1;
            }
        }
        return -1;      
    }
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7,8,9};
        System.out.println(binarySearch(array,9));
    }
}
上一篇 下一篇

猜你喜欢

热点阅读