Binary Search in Python

def bi_search(arr, target):
    low = 0
    high = len(arr) - 1
    index = None

    while low <= high:
        mid = low + (high - low) // 2
        if target == arr[mid]:
            index = mid
            break
        elif target < arr[mid]:
            high = mid - 1
        else:
            low = mid + 1

    return index
def lower_bi_search(arr, target):
    low = 0
    high = len(arr) - 1
    index = None

    while low <= high:
        mid = low + (high - low) // 2
        if target == arr[mid]:
            index = mid
            high = mid - 1  # Only this line changed
        elif target < arr[mid]:
            high = mid - 1
        else:
            low = mid + 1

    return index
def upper_bi_search(arr, target):
    low = 0
    high = len(arr) - 1
    index = None

    while low <= high:
        mid = low + (high - low) // 2
        if target == arr[mid]:
            index = mid
            low = mid + 1  # Only this line changed
        elif target < arr[mid]:
            high = mid - 1
        else:
            low = mid + 1

    return index

Bisection

def custom_sqrt(num, epsilon = 1e-6):
    if num<0:
        raise ValueError("Cannot compute square root of negative number")

    low = 0.0
    high = num

    while high-low>epsilon:
        mid = low + (high-low)/2
        if mid**2 > num:
            high = mid
        else:
            low = mid

    return low
0
Subscribe to my newsletter

Read articles from Programming Blogs directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Programming Blogs
Programming Blogs