Back Source

Implement Binary Search using Recursion.

public class BinarySearchRec {
    public static void main(String[] args) {
        BinarySearchRec a = new BinarySearchRec();
        System.out.println("Recursive Binary Search");
        a.test();
    }
    int bin_search(int[] arr, int val, int l, int u){
        if(l > u) return -1;
        else{
            int mid = (l + u)/2;
            if(arr[mid] == val) return mid;
            else if(val < arr[mid]) u = mid - 1;
            else l = mid + 1;
            return bin_search(arr, val, l, u);
        }
    }
    void test(){
        int[] data = {2, 4, 5, 9, 12, 22, 23, 24, 35, 39, 44, 48, 50, 53, 55, 59, 60, 76, 87, 92, 100};
        int[] result = {0, 0};
        for(int x = 0 ; x < data.length ; x++){
            int val = data[x];
            int index = bin_search(data, val, 0, data.length - 1);
            result[1]++;
            if(index == x) result[0]++;
        }
        System.out.printf("Test Result: %d/%d%n",result[0], result[1]);
    }
}