二分查找算法递归实现

/**
 * Created by panjiannan on 2018/7/3.
 */
public class BinarySearch {
    public static void main(String[] args) {
        int[] array = {1,2,3,6,8,9};

        System.out.println(binarySearch(array, 8));
    }

    private static int binarySearch(int[] ary, int target) {
        return binarySearch(ary, 0, ary.length -1, target);
    }

    private static int binarySearch(int[] ary, int fromIndex, int toIndex, int target) {
        if (ary.length == 0 || fromIndex > toIndex) {
            return -1;
        }
        int mid = (fromIndex + toIndex) >>> 1;
        if (target == ary[mid]) {
            return mid;
        }
        if (target < ary[mid]) {
            return binarySearch(ary, fromIndex, mid -1, target);
        }
        if (target > ary[mid]) {
            return binarySearch(ary, mid + 1, toIndex, target);
        }
        return -1;
    }
}

猜你喜欢

转载自blog.csdn.net/pange1991/article/details/80897556