# 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 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 right half.
4. 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 */`

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

Output:

```Element found at index 3
```

Please refer complete article on Binary Search for more details!

My Personal Notes arrow_drop_up

Article Tags :

1

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