Binary Search in Python

2 min read

Binary Search
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
Lower Binary Search
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
Upper Binary Search
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
