রিকার্শন ব্যবহার করে বাইনারি সার্চ ইমপ্লিমেন্ট করতে একটি মেথড সংজ্ঞায়িত করা হয়, যা চেক করে ইনডেক্স 'high' কি ইনডেক্স 'low'-এর চেয়ে বড়। 'mid' ভেরিয়েবলে থাকা ভ্যালুর ভিত্তিতে ফাংশনটি আবার কল হয় এলিমেন্ট সার্চ করার জন্য।
একটি লিস্ট হেটেরোজিনাস ভ্যালু সংরক্ষণ করতে ব্যবহার করা যায়।
নিচে ডেমোстран্স্ট্রেশন দেওয়া হলো:
উদাহরণ
def binary_search(my_list, low, high, elem):
if high >= low:
mid = (high + low) // 2
if my_list[mid] == elem:
return mid
elif my_list[mid] > elem:
return binary_search(my_list, low, mid - 1, elem)
else:
return binary_search(my_list, mid + 1, high, elem)
else:
return -1
my_list = [1, 9, 11, 21, 34, 54, 67, 90]
elem_to_search = 1
print("The list is")
print(my_list)
my_result = binary_search(my_list, 0, len(my_list) - 1, elem_to_search)
if my_result != -1:
print("Element found at index ", str(my_result))
else:
print("Element not found!")
আউটপুট
The list is [1, 9, 11, 21, 34, 54, 67, 90] Element found at index 0
ব্যাখ্যা
- 'binary_search' নামে একটি ফাংশন সংজ্ঞায়িত করা হয়েছে।
- এটি লিস্ট, 'low' ভেরিয়েবল, 'high' ভেরিয়েবল এবং সার্চ করার এলিমেন্টকে প্যারামিটার হিসেবে নেয়।
- তারপর 'mid' ভেরিয়েবলে 'high' এবং 'low' ভেরিয়েবলের গড় অ্যাসাইন করা হয়েছে।
- যদি 'mid'-এ থাকা এলিমেন্ট সার্চ করার এলিমেন্টের সমান হয়, তবে এটি রিটার্ন করা হয়।
- অন্যথায়, যদি 'mid' পজিশনের এলিমেন্ট সার্চ করার এলিমেন্টের চেয়ে বড় হয়, তবে ফাংশনটি আবার কল হয় ভিন্ন প্যারামিটার পাস করে।
- অন্যথায়, যদি 'mid' পজিশনের এলিমেন্ট সার্চ করার এলিমেন্টের চেয়ে ছোট হয়, তবে ফাংশনটি আবার কল হয় ভিন্ন প্যারামিটার পাস করে।
- এখন লিস্ট সংজ্ঞায়িত করা হয়েছে, এবং ফাংশনটি এই লিস্ট পাস করে কল করা হয়েছে।
- এই অপারেশনের ডেটা একটি ভেরিয়েবলে সংরক্ষিত হয়েছে।
- এই ভেরিয়েবলটি আউটপুট হিসেবে কনসোলে ডিসপ্লে করা হয়েছে।