Binary Search

// Java implementation of recursive Binary Search 
class BinarySearch 
{ 
    // Returns index of x if it is present in arr[l // r], else return -1 
    int binarySearch(int arr[], int l, int r, int x) 
    {
        if (r >= l) {
            int mid = l + (r - l) / 2;
            // If the element is present at the middle itself 
            if (x==arr[mid])
            return mid;
            // If element is smaller than mid, then it can only be present in left subarray 
            else if (x < arr[mid])
            return binarySearch(arr, l, mid - 1, x);
            else
            // Else the element can only be present in right subarray
            return binarySearch(arr, mid + 1, r, x); 
    } 
    // We reach here when element is not presentin array 
    return -1; 
    }
    // Driver method to test above 
    public static void main(String args[])
    {
        BinarySearch ob = new BinarySearch();
        int arr[] = { 2, 3, 4, 10, 40 };
        int n = arr.length;
        int x = 10;               
        for(int i=0;i<n;i++)
               System.out.print(arr[i]+", ");
        System.out.println();
        int result = ob.binarySearch(arr, 0, n - 1, x);
        if (result == -1)
        System.out.println("Element not present");
        else 
        System.out.println("Element "+ x+" found at index " + result);
    } 
} 
/* This code is contributed by Rajat Mishra */
This entry was posted in recursion, Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *