Related Articles

# Java Program for Binary Search (Recursive and Iterative)

• Difficulty Level : Medium
• Last Updated : 24 Sep, 2020

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