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