From fba9876fcc43129f1062e0f9111012832bfa8354 Mon Sep 17 00:00:00 2001 From: Haseeb Ahmed Date: Tue, 5 Oct 2021 16:56:47 +0500 Subject: [PATCH] Recurive Binary Search in Java --- Recursive Binary Search/README.md | 4 +++ Recursive Binary Search/binarysearch.java | 44 +++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 Recursive Binary Search/README.md create mode 100644 Recursive Binary Search/binarysearch.java diff --git a/Recursive Binary Search/README.md b/Recursive Binary Search/README.md new file mode 100644 index 0000000..e725a3a --- /dev/null +++ b/Recursive Binary Search/README.md @@ -0,0 +1,4 @@ + +## Binary Search + +Binary search is a **recursive algorithm**. The high level approach is that we examine the middle element of the list. The value of the middle element determines whether to terminate the algorithm (found the key), recursively search the left half of the list, or recursively search the right half of the list. \ No newline at end of file diff --git a/Recursive Binary Search/binarysearch.java b/Recursive Binary Search/binarysearch.java new file mode 100644 index 0000000..8b93613 --- /dev/null +++ b/Recursive Binary Search/binarysearch.java @@ -0,0 +1,44 @@ +// 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 (arr[mid] == x) + return mid; + + // If element is smaller than mid, then + // it can only be present in left subarray + if (arr[mid] > x) + return binarySearch(arr, l, mid - 1, x); + + // Else the element can only be present + // in right subarray + return binarySearch(arr, mid + 1, r, x); + } + + // We reach here when element is not present + // in array + return -1; + } + + + public static void main(String args[]) + { + BinarySearch ob = new BinarySearch(); + int arr[] = { 2, 3, 4, 10, 40 }; + int n = arr.length; + int x = 10; + int result = ob.binarySearch(arr, 0, n - 1, x); + if (result == -1) + System.out.println("Element not present"); + else + System.out.println("Element found at index " + result); + } +} +