๐ Day 52/150 – Binary Search in Python
Binary Search is a fast searching algorithm that works on sorted lists. Instead of checking every element, it repeatedly divides the search space in half.
Much faster than Linear Search
Time Complexity: O(log n)
❗ Works only on sorted data
๐น Method 1 – Using while Loop (Iterative)
numbers = [10, 20, 30, 40, 50, 60]
target = 40
low = 0
high = len(numbers) - 1
found = False
while low <= high:
mid = (low + high) // 2
if numbers[mid] == target:
found = True
break
elif numbers[mid] < target:
low = mid + 1
else:
high = mid - 1
print("Found" if found else "Not Found")
๐น Method 2 – Returning Index
๐น Method 2 – Returning Index
numbers = [10, 20, 30, 40, 50, 60]
target = 50
low = 0
high = len(numbers) - 1
while low <= high:
mid = (low + high) // 2
if numbers[mid] == target:
print("Found at index:", mid)
break
elif numbers[mid] < target:
low = mid + 1
else:
high = mid - 1
else:
print("Not Found")
๐น Method 3 – Using Function
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
result = binary_search([10, 20, 30, 40, 50], 30)
if result != -1:
print("Found at index:", result)
else:
print("Not Found")
๐น Method 4 – Using Recursion
Much faster than linear search (O(log n))
Divide-and-conquer approach
Can be implemented iteratively or recursively
๐น Method 4 – Using Recursion
def binary_search(arr, low, high, target):
if low > high:
return -1
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
return binary_search(arr, mid + 1, high, target)
else:
return binary_search(arr, low, mid - 1, target)
result = binary_search([10, 20, 30, 40, 50], 0, 4, 40)
if result != -1:
print("Found at index:", result)
else:
print("Not Found")
๐ก Key Takeaways
Works only on sorted listsMuch faster than linear search (O(log n))
Divide-and-conquer approach
Can be implemented iteratively or recursively


0 Comments:
Post a Comment