যখন অভিধান ব্যবহার না করে বাইনারি অনুসন্ধান প্রয়োগ করার প্রয়োজন হয়, তখন একটি পদ্ধতি সংজ্ঞায়িত করা যেতে পারে যা তালিকার প্রথম এবং শেষ সূচী পরীক্ষা করে এবং তালিকার মধ্যম মান পায়।
তারপরে এটি সেই মানটির সাথে তুলনা করা হয় যার জন্য পরীক্ষা করা দরকার। এটি পাওয়া গেলে, মান ফেরত দেওয়া হয়। অন্যথায়, -1 ফেরত দেওয়া হয়।
এটা মনে রাখা গুরুত্বপূর্ণ যে বাইনারি অনুসন্ধান শুধুমাত্র সাজানো উপাদানগুলিতে কাজ করে, হয় ঊর্ধ্বমুখী বা অবরোহ ক্রমে।
ভিন্নধর্মী মান (অর্থাৎ পূর্ণসংখ্যা, ফ্লোটিং পয়েন্ট, স্ট্রিং ইত্যাদির মতো যেকোনো ডেটা টাইপের ডেটা) সংরক্ষণ করতে একটি তালিকা ব্যবহার করা যেতে পারে।
নীচে একই −
এর জন্য একটি প্রদর্শন রয়েছে৷উদাহরণ
def binary_search(my_list, elem): low = 0 high = len(my_list) - 1 mid = 0 while low <= high: mid = (high + low) // 2 if my_list[mid] < elem: low = mid + 1 elif my_list[mid] > elem: high = mid - 1 else: return mid 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, 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
ব্যাখ্যা
- 'বাইনারী_অনুসন্ধান' নামের একটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা পরামিতি হিসাবে অনুসন্ধান করা তালিকা এবং উপাদানকে নেয়।
- একটি ভেরিয়েবল লো 0-এ বরাদ্দ করা হয়েছে এবং ভেরিয়েবল মিড 0-এর জন্য বরাদ্দ করা হয়েছে।
- উচ্চ পরিবর্তনশীলটিকে তালিকা-1-এর দৈর্ঘ্য নির্ধারণ করা হয়েছে।
- 'মধ্য' ভেরিয়েবলের মান পেতে বিটওয়াইজ ফ্লোর ডিভিশন করা হয়, শুধুমাত্র যদি 'নিম্ন' মান 'উচ্চ'-এর থেকে কম বা সমান হয়
- প্রথমে উপাদানটিকে নিম্ন থেকে মধ্য সূচকে অনুসন্ধান করা হয়, যদি মানটি মধ্য সূচকে উপস্থিত মানের থেকে কম হয়।
- অন্যথায় উপাদানটি মধ্য থেকে উচ্চ সূচকে অনুসন্ধান করা হয়, যদি মানটি মধ্য থেকে বেশি এবং উচ্চের থেকে কম হয়।
- এখন, একটি তালিকা সংজ্ঞায়িত করা হয়েছে।
- পদ্ধতিটিকে প্যারামিটার হিসাবে উপরের তালিকাটি পাস করে বলা হয়।
- এই অপারেশনের ডেটা একটি ভেরিয়েবলে সংরক্ষিত হয়।
- এই ভেরিয়েবল হল আউটপুট যা কনসোলে প্রদর্শিত হয়।