【Algorithm】二分查找(递归实现)

二分查找(递归实现),Java 代码如下:

public class BinarySearch {
    public static int rank(int key, int[] a) {
        return rank(key, a, 0, a.length-1);
    }
    
    private static int rank(int key, int[] a, int lo, int hi) {
        // 如果 key 存在于 a[] 中,它的索引不会小于 lo 且不会大于 hi
        
        if (lo > hi)
            return -1;
        int mid = lo + (hi - lo) / 2;
        if (key < a[mid])
            return rank(key, a, lo, mid-1);
        else if (key > a[mid])
            return rank(key, a, mid+1, hi);
        else
            return mid;
    }

    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 9, 17, 25, 34, 52, 91};
        System.out.println("arr length: " + arr.length);
        System.out.println(rank(9, arr));
    }
}

注意:进行二分查找的表或数组是有序的。

From: 《算法》

PS: 自己在算法方面太弱了,基本是零基础,而且一看到算法首先想到的就是逃避……一定要克服这个观念,一点点突破!

原文地址:https://www.cnblogs.com/jaxer/p/5322915.html