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 :

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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"

chevron_right


Output:

Element is present at index 3

Iterative:

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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"

chevron_right


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 :

1


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