
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