coderz.py

Keep Coding Keep Cheering!

Implementation of Binary Search in Python

Binary Search

Binary Search, also known as half-interval search, logarithmic search, or binary chop, is a search algorithm that finds the position of a target value within a sorted array. Binary search compares the target value to the middle element of the array.

If they are not equal, the half in which the target cannot lie is eliminated and the search continues on the remaining half, again taking the middle element to compare to the target value, and repeating this until the target value is found. If the search ends with the remaining half being empty, the target is not in the array.

Binary search runs in logarithmic time in the worst case, making O(\log n) comparisons, where n is the number of elements in the array.

Solution

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def binary_search(arr, ele):
     
    # First and last index values
    first = 0
    last = len(arr) - 1
     
    found = False
     
     
    while first <= last and not found:
         
        mid = (first+last)/2 # or // for Python 3
         
        # Match found
        if arr[mid] == ele:
            found = True
         
        # Set new midpoints up or down depending on comparison
        else:
            # Set down
            if ele < arr[mid]:
                last = mid -1
            # Set up
            else:
                first = mid + 1
                 
    return found
28
29
# list must already be sorted!
arr = [1,2,3,4,5,6,7,8,9,10]
30
binary_search(arr,4)

True

31
binary_search(arr,2.2)

False

Binary Search using Recursive Method

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def rec_bin_search(arr,ele):
     
    # Base Case!
    if len(arr) == 0:
        return False
     
    # Recursive Case
    else:
         
        mid = len(arr)/2
         
        # If match found
        if arr[mid] == ele:
            return True
         
        else:
             
            # Call again on second half
            if ele < arr[mid]:
                return rec_bin_search(arr[:mid], ele)
             
            # Or call on first half
            else:
                return rec_bin_search(arr[mid+1:], ele)
25
rec_bin_search(arr,3)

True

26
rec_bin_search(arr,15)

False

Recommended: Introduction to Recursion

Follow Me

If you like my post please follow me to read my latest post on programming and technology.

Instagram

Facebook

Leave a Comment

Advertisement