# Python 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.

Recursive :

 `# Python Program for recursive binary search. ` ` `  `# Returns index of x in arr if present, else -1 ` `def` `binarySearch (arr, l, r, x): ` ` `  `    ``# Check base case ` `    ``if` `r >``=` `l: ` ` `  `        ``mid ``=` `l ``+` `(r ``-` `l)``/``2` ` `  `        ``# If 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 ` `        ``elif` `arr[mid] > x: ` `            ``return` `binarySearch(arr, l, mid``-``1``, x) ` ` `  `        ``# Else the element can only be present in right subarray ` `        ``else``: ` `            ``return` `binarySearch(arr, mid``+``1``, r, x) ` ` `  `    ``else``: ` `        ``# Element is not present in the array ` `        ``return` `-``1` ` `  `# Test array ` `arr ``=` `[ ``2``, ``3``, ``4``, ``10``, ``40` `] ` `x ``=` `10` ` `  `# Function call ` `result ``=` `binarySearch(arr, ``0``, ``len``(arr)``-``1``, x) ` ` `  `if` `result !``=` `-``1``: ` `    ``print` `"Element is present at index %d"` `%` `result ` `else``: ` `    ``print` `"Element is not present in array"`

Output:

```Element is present at index 3
```

Iterative:

 `# Iterative Binary Search Function ` `# It returns location of x in given array arr if present, ` `# else returns -1 ` `def` `binarySearch(arr, l, r, x): ` ` `  `    ``while` `l <``=` `r: ` ` `  `        ``mid ``=` `l ``+` `(r ``-` `l)``/``2``; ` `         `  `        ``# Check if x is present at mid ` `        ``if` `arr[mid] ``=``=` `x: ` `            ``return` `mid ` ` `  `        ``# If x is greater, ignore left half ` `        ``elif` `arr[mid] < x: ` `            ``l ``=` `mid ``+` `1` ` `  `        ``# If x is smaller, ignore right half ` `        ``else``: ` `            ``r ``=` `mid ``-` `1` `     `  `    ``# If we reach here, then the element was not present ` `    ``return` `-``1` ` `  ` `  `# Test array ` `arr ``=` `[ ``2``, ``3``, ``4``, ``10``, ``40` `] ` `x ``=` `10` ` `  `# Function call ` `result ``=` `binarySearch(arr, ``0``, ``len``(arr)``-``1``, x) ` ` `  `if` `result !``=` `-``1``: ` `    ``print` `"Element is present at index %d"` `%` `result ` `else``: ` `    ``print` `"Element is not present in array"`

Output:

```Element is present at index 3
```

Please refer complete article on Binary Search for more details!

My Personal Notes arrow_drop_up
Article Tags :

3

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