croder
10/24/2018 - 8:46 PM

python binary search


def binary_search(arr):
    low, high, mid = 0, len(arr) - 1, 0
    best = low
    while low <= high:
        mid = low + (high - low) / 2
        if arr[mid] < val:
            low = mid + 1
        elif arr[mid] > val:
            high = mid - 1
        else:
            best = mid
            break
        if abs(arr[mid] - val) < abs(arr[best] - val):
            best = mid
    return best