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