# Java Program for Binary Search (Recursive and Iterative)

We basically ignore half of the elements just after one comparison.

1. Compare x with the middle element.
2. If x matches with the middle element, we return the mid index.
3. 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 the right half.
4. Else (x is smaller) recur for the left half.

## Java

 `// 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)` `    ``{` `        ``//Restrict the boundary of right index ` `        ``// and the left index to prevent ` `        ``// overflow of indices. ` `        ``if` `(r >= l && l 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 */`

Output:

```Element found at index 3

```

## Java

 `// 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);` `    ``}` `}`

Output:

```Element found at index 3

```

Please refer complete article on Binary Search for more details!

My Personal Notes arrow_drop_up

Improved By : naveenrao

Article Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.