जब शब्दकोश का उपयोग किए बिना बाइनरी खोज को लागू करने की आवश्यकता होती है, तो एक विधि परिभाषित की जा सकती है जो सूची की पहली और अंतिम अनुक्रमणिका की जांच करती है, और सूची का मध्य मान प्राप्त करती है।
फिर इसकी तुलना उस मूल्य से की जाती है जिसके लिए जाँच करने की आवश्यकता होती है। यदि यह पाया जाता है, तो मान वापस कर दिया जाता है। वरना, -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 की लंबाई असाइन की गई है।
- बिटवाइज फ्लोर डिवीजन 'मिड' वेरिएबल के लिए वैल्यू प्राप्त करने के लिए किया जाता है, केवल तभी जब वैल्यू 'लो' वैल्यू 'हाई' से कम या उसके बराबर हो
- सबसे पहले तत्व को निम्न से मध्य अनुक्रमणिका में खोजा जाता है, यदि मान मध्य अनुक्रमणिका में मौजूद मान से कम है।
- अन्यथा तत्व को मध्य से उच्च सूचकांक में खोजा जाता है, यदि मान मध्य से अधिक और उच्च से कम है।
- अब, एक सूची परिभाषित की गई है।
- उपरोक्त सूची को पैरामीटर के रूप में पास करके विधि को कॉल किया जाता है।
- इस ऑपरेशन का डेटा एक वेरिएबल में स्टोर किया जाता है।
- यह चर वह आउटपुट है जो कंसोल पर प्रदर्शित होता है।