Python Program for Binary Search (Recursive and Iterative)
Improve
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.
Python Program for Binary Search Using 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(logn) [NOTE: Recursion creates Call Stack]
Python Program for Binary Search Using 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)
Python Program for Binary Search Using the built-in bisect module
Step by step approach:
- The code imports the bisect module which provides support for binary searching.
- The binary_search_bisect() function is defined which takes an array arr and the element to search x as inputs.
- The function calls the bisect_left() function of the bisect module which finds the position of the element in the sorted array arr where x should be inserted to maintain the sorted order. If the element is already present in the array, this function will return its position.
- The function then checks if the returned index i is within the range of the array and if the element at that index is equal to x.
- If the condition is true, then the function returns the index i as the position of the element in the array.
- If the condition is false, then the function returns -1 indicating that the element is not present in the array.
- The code then defines an array arr and an element x to search.
- The binary_search_bisect() function is called with arr and x as inputs and the returned result is stored in the result variable.
- The code then checks if the result is not equal to -1, indicating that the element is present in the array. If true, it prints the position of the element in the array.
- If the result is equal to -1, then the code prints a message that the element is not present in the array.
Python3
import bisect def binary_search_bisect(arr, x): i = bisect.bisect_left(arr, x) if i != len(arr) and arr[i] == x: return i else: return -1 # Test arrayarr = [2, 3, 4, 10, 40]x = 10 # Function callresult = binary_search_bisect(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)
Don't miss your chance to ride the wave of the data revolution! Every industry is scaling new heights by tapping into the power of data. Sharpen your skills, become a part of the hottest trend in the 21st century.
Dive into the future of technology - explore the Complete Machine Learning and Data Science Program by GeeksforGeeks and stay ahead of the curve.
Dive into the future of technology - explore the Complete Machine Learning and Data Science Program by GeeksforGeeks and stay ahead of the curve.
Commit to GfG's Three-90 Challenge! Purchase a course, complete 90% in 90 days, and save 90% cost click here to explore.
Share your thoughts in the comments

