class BinarySearch { int binarySearch(int arr[], int l, int r, int x) { if (r>=l) { int mid = l + (r - l)/2; if (arr[mid] == x) return mid; if (arr[mid] > x) return binarySearch(arr, l, mid-1, x); return binarySearch(arr, mid+1, r, x); } 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); } }public class RecursiveBinarySearch { public static int binarySearch(int[] input, int target, int start, int end) { if (start >= end) { return -1; } else { int mid = start + (end - start) / 2; if (target < input[mid]) { return binarySearch(input, target, start, mid-1); } else if (target > input[mid]) { return binarySearch(input, target, mid+1, end); } else { return mid; } } } }private static boolean binarySearch(int[] pool, int target) { int left = 0, right = pool.length - 1; int middle; boolean found = false; while(!found && left <= right) { middle = left + (right - left) / 2; if(pool[middle] == target) { found = true; } else if(pool[middle] < target) { left = middle + 1; } else { right = middle - 1; } }