Python Program for Binary Search (Recursive and Iterative)

13 Jun, 2022
In a nutshell, this search algorithm takes advantage of a collection of elements that is already sorted by ignoring half of the elements after just one comparison. 
Compare x with the middle element.If x matches with the middle element, we return the mid index.Else if x is greater than the mid element, then x can only lie in the right (greater) half subarray after the mid element. Then we apply the algorithm again for the right half.Else if x is smaller, the target x must lie in the left (lower) half. So we apply the algorithm for the left half.
Compare x with the middle element.
If x matches with the middle element, we return the mid index.
Else if x is greater than the mid element, then x can only lie in the right (greater) half subarray after the mid element. Then we apply the algorithm again for the right half.
Else if x is smaller, the target x must lie in the left (lower) half. So we apply the algorithm for the left half.
Recursive :
Python3
# Python 3 program for recursive binary search.# Modifications needed for the older Python 2 are found in comments. # Returns index of x in arr if present, else -1def binary_search(arr, low, high, x):     # Check base case    if high >= low:         mid = (high + low) // 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 binary_search(arr, low, mid - 1, x)         # Else the element can only be present in right subarray        else:            return binary_search(arr, mid + 1, high, x)     else:        # Element is not present in the array        return -1 # Test arrayarr = [ 2, 3, 4, 10, 40 ]x = 10 # Function callresult = binary_search(arr, 0, len(arr)-1, x) if result != -1:    print("Element is present at index", str(result))else:    print("Element is not present in array")
Output:  
Element is present at index 3
Time Complexity: O(log n)
Auxiliary Space: O(1)Iterative: 
Python3
# Iterative Binary Search Function# It returns index of x in given array arr if present,# else returns -1def binary_search(arr, x):    low = 0    high = len(arr) - 1    mid = 0     while low <= high:         mid = (high + low) // 2         # If x is greater, ignore left half        if arr[mid] < x:            low = mid + 1         # If x is smaller, ignore right half        elif arr[mid] > x:            high = mid - 1         # means x is present at mid        else:            return mid     # If we reach here, then the element was not present    return -1  # Test arrayarr = [ 2, 3, 4, 10, 40 ]x = 10 # Function callresult = binary_search(arr, x) if result != -1:    print("Element is present at index", str(result))else:    print("Element is not present in array")
Output:  
Element is present at index 3
Time Complexity: O(log n)
Auxiliary Space: O(1)
Please refer to the article Binary Search for more details! 
poojanpujara007
renato_montes
RajeshKellaKumar
chandramauliguptach
python searching-exercises
Python Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python | Convert a list to dictionary
Python | Convert string dictionary to dictionary
Python Program for Fibonacci numbers
Python program to check whether a number is Prime or not
Python program to add two numbers
Python Program for factorial of a number
Python program to find second largest number in a list
Iterate over characters of a string in Python
Python | Convert set into a list
Python program to interchange first and last elements in a list