def binary_search(list, find_value):
low = 0
high = len(list) - 1
while low <= high:
mid = (low + high) // 2
if list[mid] < find_value:
low = mid + 1
elif list[mid] > find_value:
high = mid - 1
else:
return mid
print("Element not found")
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
index = binary_search(nums, 90)
print(index)
Binary Search Algorithm
āĻāĻ āĻোāĻĄāĻি āĻāĻāĻি āĻŦাāĻāύাāϰি āϏাāϰ্āĻ (binary search) āĻ ্āϝাāϞāĻāϰিāĻĻāĻŽ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে āϏাāĻাāύো āϤাāϞিāĻা (list) āĻĨেāĻে āĻāĻāĻি āύিāϰ্āĻĻিāώ্āĻ āĻŽাāύ (find_value) āĻুঁāĻে āĻŦেāϰ āĻāϰে। āĻāϞুāύ āϧাāĻĒে āϧাāĻĒে āĻোāĻĄāĻি āĻŦ্āϝাāĻ্āϝা āĻāϰা āϝাāĻ।
āĻোāĻĄেāϰ āϧাāĻĒে āϧাāĻĒে āĻŦ্āϝাāĻ্āϝা:
-
āĻĒ্āϰাāĻĨāĻŽিāĻ āϏেāĻāĻāĻĒ:
low = 0: āĻāĻি āϤাāϞিāĻাāϰ āĻĒ্āϰāĻĨāĻŽ āĻāύ্āĻĄেāĻ্āϏ āύিāϰ্āϧাāϰāĻŖ āĻāϰে।high = len(list) - 1: āĻāĻি āϤাāϞিāĻাāϰ āϏāϰ্āĻŦāĻļেāώ āĻāύ্āĻĄেāĻ্āϏ āύিāϰ্āϧাāϰāĻŖ āĻāϰে। āϝেāĻšেāϤু āϤাāϞিāĻাāϰ āĻāύ্āĻĄেāĻ্āϏ āĻļূāύ্āϝ āĻĨেāĻে āĻļুāϰু āĻšāϝ়, āϤাāĻ āĻāĻŽāϰাlen(list) - 1āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰি āϏāϰ্āĻŦāĻļেāώ āĻāύ্āĻĄেāĻ্āϏāĻি āĻĒেāϤে।
-
while āϞুāĻĒ:
while low <= high:āĻāĻ āϞুāĻĒāĻি āĻāϞāϤে āĻĨাāĻāĻŦে āϝāϤāĻ্āώāĻŖ āĻĒāϰ্āϝāύ্āϤlowāĻāύ্āĻĄেāĻ্āϏāĻিhighāĻāύ্āĻĄেāĻ্āϏেāϰ āĻেāϝ়ে āĻোāĻ āĻŦা āϏāĻŽাāύ āĻĨাāĻে। āĻāĻ āϞুāĻĒেāϰ āĻŽāϧ্āϝে āϤাāϞিāĻাāϰ āĻŽাāĻাāĻŽাāĻি āĻĨেāĻে āĻāĻĒাāĻĻাāύāĻুāϞি āĻĒāϰীāĻ্āώা āĻāϰা āĻšāĻŦে। -
āĻŽāϧ্āϝ āĻŦিāύ্āĻĻু āύিāϰ্āϧাāϰāĻŖ:
mid = (low + high) // 2: āĻāĻ āϞাāĻāύāĻি āĻŦāϰ্āϤāĻŽাāύlowāĻāĻŦংhighāĻāϰ āĻŽাāĻেāϰ āĻāύ্āĻĄেāĻ্āϏ āĻŦেāϰ āĻāϰে। āĻāĻি āϤাāϞিāĻাāϰ āĻŽাāĻāĻাāύেāϰ āĻāĻĒাāĻĻাāύāĻি āĻĒāϰীāĻ্āώা āĻāϰাāϰ āĻāύ্āϝ। -
āϤুāϞāύা:
if list[mid] < find_value:āϝāĻĻি āĻŽাāĻāĻাāύেāϰ āĻāĻĒাāĻĻাāύāĻিfind_valueāĻāϰ āĻেāϝ়ে āĻোāĻ āĻšāϝ়, āϤাāĻšāϞে āĻāϰ āĻŽাāύে āĻšāĻ্āĻেfind_valueāĻĄাāύāĻĻিāĻে āĻāĻে। āϏেāĻ্āώেāϤ্āϰে āĻāĻŽāϰাlowāĻāύ্āĻĄেāĻ্āϏāĻিāĻেmid + 1āĻ āĻāĻĒāĻĄেāĻ āĻāϰি।elif list[mid] > find_value:āϝāĻĻি āĻŽাāĻেāϰ āĻāĻĒাāĻĻাāύāĻিfind_valueāĻāϰ āĻেāϝ়ে āĻŦāĻĄ় āĻšāϝ়, āϤাāĻšāϞেfind_valueāĻŦাāĻŽāĻĻিāĻে āĻāĻে। āĻāĻāύ্āϝ āĻāĻŽāϰাhighāĻāύ্āĻĄেāĻ্āϏāĻিāĻেmid - 1āĻ āĻāĻĒāĻĄেāĻ āĻāϰি।else:āϝāĻĻি āĻŽাāĻāĻাāύেāϰ āĻāĻĒাāĻĻাāύāĻি āĻ িāĻfind_valueāĻāϰ āϏāĻŽাāύ āĻšāϝ়, āϤাāĻšāϞে āĻĢাংāĻļāύāĻিmidāϰিāĻাāϰ্āύ āĻāϰে।
-
āĻĢাংāĻļāύেāϰ āĻļেāώ āĻ
ংāĻļ:
return -1:āϝāĻĻি āĻāĻĒāϰেāϰ āϞুāĻĒ āĻļেāώ āĻšāϝ় āĻāĻŦং āϤাāϞিāĻাāϰ āĻŽāϧ্āϝেfind_valueāύা āĻĒাāĻāϝ়া āϝাāϝ়, āϤাāĻšāϞে āĻāĻি-1āϰিāĻাāϰ্āύ āĻāϰে।
āĻāĻĻাāĻšāϰāĻŖ:
āϤাāϞিāĻা: nums = [1, 2, 3, 4, 5, 6, 7, 8, 9] āĻāĻŦং āĻāĻĒāύি find_value = 8 āĻুঁāĻāĻেāύ:
- āĻļুāϰুāϤে,
low = 0āĻāĻŦংhigh = 8(āϤাāϞিāĻাāϰ āĻļেāώ āĻāύ্āĻĄেāĻ্āϏ)। - āĻĒ্āϰāĻĨāĻŽে,
mid = (0 + 8) // 2 = 4, āĻāĻŦংnums[4] = 5। āϝেāĻšেāϤু5 < 8, āϤাāĻ āĻāĻŽāϰাlow = mid + 1 = 5āĻāϰি। - āĻĻ্āĻŦিāϤীāϝ় āϧাāĻĒে,
mid = (5 + 8) // 2 = 6, āĻāĻŦংnums[6] = 7। āϝেāĻšেāϤু7 < 8, āϤাāĻ āĻāĻŦাāϰlow = mid + 1 = 7āĻāϰি। - āϤৃāϤীāϝ় āϧাāĻĒে,
mid = (7 + 8) // 2 = 7, āĻāĻŦংnums[7] = 8। āϝেāĻšেāϤু8 == 8, āĻĢাংāĻļāύāĻিmidāϰিāĻাāϰ্āύ āĻāϰāĻŦে, āϝা7।
āĻāĻāĻāĻĒুāĻ:
7