द्विआधारी खोज


<दिव>

बाइनरी खोज एक कुशल — इसकी जटिलता का अनुमान O(log2(n)) है, जबकि पारंपरिक अनुक्रमिक खोज में O(n) है। इसका मतलब है कि, उदाहरण के लिए, 1024 तत्वों की एक सरणी के लिए, एक रैखिक खोज, सबसे खराब स्थिति में, जब वांछित तत्व सरणी में नहीं है, तो सभी 1024 तत्वों को संसाधित करेगा। बाइनरी खोज \(log_2(1024) = 10\) तत्वों को संसाधित करने के लिए पर्याप्त है। यह परिणाम इस तथ्य के कारण प्राप्त होता है कि लूप के पहले चरण के बाद, खोज क्षेत्र 512 तत्वों तक सीमित हो जाता है, दूसरे - के बाद; 256 तक आदि।

इस एल्गोरिदम के नुकसान डेटा ऑर्डर करने की आवश्यकता है, साथ ही किसी भी डेटा तत्व को निरंतर (डेटा की मात्रा से स्वतंत्र) समय में एक्सेस करने की क्षमता है। इस प्रकार, एल्गोरिथ्म अनियंत्रित सरणियों और लिंक्ड सूचियों के आधार पर किसी भी डेटा संरचना पर काम नहीं कर सकता है।


कार्यान्वयन
का उपयोग करके उत्पन्न किया गया
<पूर्व शैली = "मार्जिन-बाएं: 0 पीएक्स; मार्जिन-दाएं: 0 पीएक्स"> अलविदा (दाएं - बाएं > 1) // जब तक दायां बॉर्डर बाईं ओर दाईं ओर है एनसी मध्य = (बाएं + दाएं) /< /span> 2; // खोज क्षेत्र के मध्य अगर (A[middle] >= b) तब दाएँ = बीच में; // दायां बॉर्डर ले जाएं अन्यथा बाएं = बीच में; // अन्यथा बायां बॉर्डर ले जाएं सीसी अगर (ए[दाएं] == एक्स) तो सही आउटपुट; अन्यथा आउटपुट -1;

कहा पे:
A - स्रोत सरणी,
N - सरणी आकार,
X - वांछित संख्या।