"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या आप C++ में एक कुशल बाइनरी सर्च एल्गोरिदम लागू कर सकते हैं जो खोज परिणाम पर एक इटरेटर लौटाता है?

क्या आप C++ में एक कुशल बाइनरी सर्च एल्गोरिदम लागू कर सकते हैं जो खोज परिणाम पर एक इटरेटर लौटाता है?

2024-11-08 को प्रकाशित
ब्राउज़ करें:828

Can You Implement an Efficient Binary Search Algorithm in C   that Returns an Iterator to the Search Result?

सी में एक कुशल बाइनरी खोज एल्गोरिदम की खोज

प्रोग्रामर अक्सर कुशल बाइनरी खोज एल्गोरिदम लागू करना चाहते हैं जो लॉगरिदमिक समय जटिलता का लाभ प्रदान करते हैं . एल्गोरिदम के लिए एक सामान्य आवश्यकता यह है कि वह अपने अस्तित्व को इंगित करने वाले एक साधारण बूलियन के बजाय खोज परिणाम की ओर इशारा करते हुए एक पुनरावर्तक लौटाए।

सी मानक लाइब्रेरी हेडर में std::binary_search प्रदान करती है, लेकिन यह एक बूलियन लौटाता है। जैसा कि प्रश्नकर्ता ने नोट किया है, यह उन स्थितियों के लिए निराशाजनक हो सकता है जहां बाइनरी खोज की गति वांछित है और डेटा को सॉर्ट करने के लिए जाना जाता है।

सौभाग्य से, ऐसे वैकल्पिक कार्यान्वयन उपलब्ध हैं जो वांछित कार्यक्षमता प्रदान करते हैं। एक लोकप्रिय विकल्प एक कस्टम एल्गोरिदम का उपयोग करना है जो std::lower_ound, std::upper_ound, या std::equal_range फ़ंक्शंस का लाभ उठाता है। इस तरह के कार्यान्वयन का एक सरलीकृत संस्करण यहां दिया गया है:

template
Iter binary_find(Iter begin, Iter end, T val) {
    // Determine the lower bound using binary search
    Iter i = std::lower_bound(begin, end, val);

    // If the element is found, return the iterator to it
    if (i != end && !(val 

वैकल्पिक रूप से, एक std::set का उपयोग किया जा सकता है, जो तत्वों के क्रम की गारंटी देता है और खोज विधि प्रदान करता है जो वांछित आइटम पर एक पुनरावर्तक लौटाता है। हालाँकि, यह विचार करना महत्वपूर्ण है कि क्या आवश्यकताएँ किसी सेट के उपयोग के अनुकूल हैं, खासकर उन मामलों में जहां एक ही तत्व के कई उदाहरणों को संग्रहीत करने की आवश्यकता होती है।

विज्ञप्ति वक्तव्य यह लेख यहां पुनर्मुद्रित है: 1729693891 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3