Binary Search Algorithm Code Bangla Explanation
![](https://media.geeksforgeeks.org/wp-content/uploads/20240506155201/binnary-search-.webp)
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