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