Java Program for Binary Search (Recursive and Iterative)
We basically ignore half of the elements just after one comparison.
- Compare x with the middle element.
- If x matches with middle element, we return the mid index.
- Else If x is greater than the mid element, then x can only lie in right half subarray after the mid element. So we recur for right half.
- Else (x is smaller) recur for the left half.
// 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 ; } // 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 ; 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); } } /* This code is contributed by Rajat Mishra */ |
chevron_right
filter_none
Output:
Element found at index 3
// Java implementation of iterative Binary Search class BinarySearch { // Returns index of x if it is present in arr[], else // return -1 int binarySearch( int arr[], int x) { int l = 0 , r = arr.length - 1 ; while (l <= r) { int m = l + (r - l) / 2 ; // Check if x is present at mid if (arr[m] == x) return m; // If x greater, ignore left half if (arr[m] < x) l = m + 1 ; // If x is smaller, ignore right half else r = m - 1 ; } // if we reach here, then element was not present 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 ; int result = ob.binarySearch(arr, x); if (result == - 1 ) System.out.println( "Element not present" ); else System.out.println( "Element found at index " + result); } } |
chevron_right
filter_none
Output:
Element found at index 3
Please refer complete article on Binary Search for more details!
Recommended Posts:
- LongStream.Builder build() in Java
- DoubleStream.Builder build() in Java
- Java 8 | Consumer Interface in Java with Examples
- MouseListener and MouseMotionListener in Java
- Java Program for Selection Sort
- Java Program for Bubble Sort
- Java Program for Insertion Sort
- Java Program for Heap Sort
- Java Program for Radix Sort
- Java Program for n-th Fibonacci numbers
- Java Program for Counting Sort
- Java Program for ShellSort
- Java Program for Longest Common Subsequence
- Java Program 0-1 Knapsack Problem
- Java Program for Min Cost Path