Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में बाइनरी सर्च समझाया गया

बाइनरी सर्च एक सर्चिंग एल्गोरिथम है जिसका उपयोग सॉर्ट की गई ऐरे से एलिमेंट सर्च करने के लिए किया जाता है। इसका उपयोग अनसॉर्ट की गई ऐरे से सर्च करने के लिए नहीं किया जा सकता। बाइनरी सर्च एक कुशल एल्गोरिथम है और टाइम कॉम्प्लेक्सिटी के मामले में लीनियर सर्च से बेहतर है।

लीनियर सर्च की टाइम कॉम्प्लेक्सिटी O(n) है। जबकि बाइनरी सर्च की टाइम कॉम्प्लेक्सिटी O(log n) है। इसलिए, बाइनरी सर्च एक कुशल और तेज़ सर्चिंग एल्गोरिथम है लेकिन इसका उपयोग केवल सॉर्ट की गई ऐरे से सर्च करने के लिए किया जा सकता है।

बाइनरी सर्च कैसे काम करता है?

बाइनरी सर्च के पीछे मूल विचार यह है कि आवश्यक एलिमेंट की तुलना ऐरे के सभी एलिमेंट्स के साथ करने के बजाय, हम आवश्यक एलिमेंट की तुलना ऐरे के मध्य एलिमेंट के साथ करेंगे। यदि यह वह एलिमेंट निकलता है जिसे हम ढूंढ रहे हैं, तो हम सर्च सफलतापूर्वक पूरा कर लेते हैं। अन्यथा, यदि हम जिस एलिमेंट को ढूंढ रहे हैं वह मध्य एलिमेंट से कम है, तो यह निश्चित है कि एलिमेंट ऐरे के पहले या बाएं आधे भाग में स्थित है, क्योंकि ऐरे सॉर्ट की गई है। इसी तरह, यदि हम जिस एलिमेंट को ढूंढ रहे हैं वह मध्य एलिमेंट से बड़ा है, तो यह निश्चित है कि एलिमेंट ऐरे के दूसरे आधे भाग में स्थित है।

इस प्रकार, बाइनरी सर्च लगातार ऐरे को आधा कर देती है। उपरोक्त प्रक्रिया चयनित ऐरे के आधे भाग पर रिकर्सिवली लागू की जाती है जब तक हम उस एलिमेंट को नहीं ढूंढ लेते जिसे हम ढूंढ रहे हैं।

हम बाएं इंडेक्स 0 और दाएं इंडेक्स ऐरे के अंतिम इंडेक्स के बराबर के साथ सर्च शुरू करेंगे। मध्य एलिमेंट इंडेक्स (mid) की गणना की जाती है जो बाएं और दाएं इंडेक्स के योग को 2 से विभाजित करने पर प्राप्त होता है। यदि आवश्यक एलिमेंट मध्य एलिमेंट से कम है, तो दायां इंडेक्स mid-1 में बदल जाता है, जिसका अर्थ है कि अब हम केवल ऐरे के पहले आधे भाग को देखेंगे। इसी तरह, यदि आवश्यक एलिमेंट मध्य एलिमेंट से बड़ा है, तो बायां इंडेक्स mid+1 में बदल जाता है, जिसका अर्थ है कि अब हम केवल ऐरे के दूसरे आधे भाग को देखेंगे। हम चयनित ऐरे आधे के लिए उपरोक्त प्रक्रिया दोहराएंगे।

हमें कैसे पता चलेगा कि एलिमेंट ऐरे में मौजूद नहीं है?

हमें सर्च को रोकने के लिए कुछ कंडीशन की आवश्यकता होती है जो इंगित करेगी कि एलिमेंट ऐरे में मौजूद नहीं है। हम ऐरे में एलिमेंट के लिए इटरेटिवली सर्च करेंगे जब तक बायां इंडेक्स दाएं इंडेक्स से कम या बराबर है। एक बार यह कंडीशन फाल्स हो जाती है और हमने अभी तक एलिमेंट नहीं ढूंढा है, तो इसका मतलब है कि एलिमेंट ऐरे में मौजूद नहीं है।

उदाहरण

आइए निम्नलिखित सॉर्ट की गई ऐरे को लें और हमें एलिमेंट 6 सर्च करना है।

2 5 6 8 10 11 13 15 16

L=0 H=8 Mid=4

2 5 6 8 10 11 13 15 16

6 < 10, इसलिए पहला आधा भाग लें।

H = Mid-1

L=0 H=3 Mid=1

2 5 6 8 10 11 13 15 16

6 > 5, इसलिए दूसरा आधा भाग चुनें।

L = Mid+1

L=2 H=3 Mid=2

2 5 6 8 10 11 13 15 16

6 == 6, एलिमेंट मिल गया

इस प्रकार एलिमेंट 6 इंडेक्स 2 पर पाया गया।

कार्यान्वयन

एक दी गई सॉर्ट की गई ऐरे से, आवश्यक एलिमेंट को सर्च करें और यदि एलिमेंट ऐरे में मौजूद है तो उसका इंडेक्स प्रिंट करें। यदि एलिमेंट मौजूद नहीं है, तो -1 प्रिंट करें।

बाइनरी सर्च के कार्यान्वयन का कोड नीचे दिया गया है।

उदाहरण

def binary_search(arr, x):
    l = 0
    r = len(arr) - 1
    while l <= r:
        mid = (l + r) // 2
        if arr[mid] == x:
            return mid
        elif x < arr[mid]:
            r = mid - 1
        elif x > arr[mid]:
            l = mid + 1
    return -1

array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = 7
print(binary_search(array, a))
b = 15
print(binary_search(array, b))

आउटपुट

6
-1

एलिमेंट 7 इंडेक्स 6 पर मौजूद है।

एलिमेंट 15 ऐरे में मौजूद नहीं है, इसलिए -1 प्रिंट होता है।

  1. पायथन में क्रमबद्ध सरणी को बाइनरी सर्च ट्री में बदलें पायथन में क्रमबद्ध सरणी को बाइनरी सर्च ट्री में बदलें

    मान लीजिए हमारे पास एक क्रमबद्ध सरणी A है। हमें एक ऊंचाई-संतुलित बाइनरी सर्च ट्री उत्पन्न करना है। इस समस्या में, एक ऊंचाई-संतुलित बाइनरी ट्री वास्तव में एक बाइनरी ट्री है जिसमें हर नोड के दो सबट्री की गहराई 1 से अधिक नहीं होती। मान लीजिए सरणी [-10, -3, 0, 5, 9] जैसी है। तो एक संभावित आउटपुट होगा:

  1. पायथन प्रोग्राम में लीनियर सर्च पायथन प्रोग्राम में लीनियर सर्च

    इस लेख में, हम पायथन 3.x में लीनियर सर्च और इसके कार्यान्वयन के बारे में सीखेंगे। या इससे पहले। एल्गोरिदम दिए गए arr[] के बाएंmost एलिमेंट से शुरू करें और एक-एक करके एलिमेंट x की तुलना arr[] के प्रत्येक एलिमेंट से करें। यदि x किसी एलिमेंट से मेल खाता है, तो इंडेक्स वैल्यू वापस करें। यदि x, arr[]

  1. पायथन प्रोग्राम: लीनियर सर्च एल्गोरिदम पायथन प्रोग्राम: लीनियर सर्च एल्गोरिदम

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में लीनियर सर्च और इसके कार्यान्वयन के बारे में जानेंगे।एल्गोरिदमदिए गए arr[] के बाएं सबसे तत्व से शुरू करें और एक-एक करके तत्व x की तुलना arr[] के प्रत्येक तत्व से करेंयदि x किसी तत्व से मेल खाता है, तो इंडेक्स मान वापस करें।यदि x, arr[] के किसी भी त