हम सरणी तत्व की संख्या को पढ़ते और लिखते हैं। बबल सॉर्ट करने के लिए, आपको एक्सेस की आवश्यकता होती है (अंत तक प्रारंभिक लेखन, फिर, सबसे खराब स्थिति में, दो रीड और दो एन स्वैप करने के लिए लिखते हैं )। बाइनरी खोज करने के लिए, हमें 2 लॉग एन + 2 एन + 1 ( बाइनरी खोज के लिए 2 लॉग एन , फिर, सबसे खराब स्थिति में, सरणी तत्वों को दाईं ओर शिफ्ट करने के लिए 2 एन की जरूरत है, फिर सरणी तत्व लिखने के लिए 1 इसकी उचित स्थिति)।1+4nn2logn+2n+12logn2n
तो दोनों विधियों में सरणी कार्यान्वयन के लिए एक ही जटिलता है, लेकिन बाइनरी सर्च विधि को लंबे समय में कम सरणी एक्सेस की आवश्यकता होती है ... asymptotically, आधे के रूप में कई। स्वाभाविक रूप से खेल में अन्य कारक हैं।
वास्तव में, आप बेहतर कार्यान्वयन का उपयोग कर सकते हैं और केवल वास्तविक सरणी एक्सेस की गणना कर सकते हैं (सम्मिलित किए जाने वाले तत्व तक पहुंच नहीं)। आप बबल सॉर्ट के लिए कर सकते हैं , और द्विआधारी खोज के लिए एन + 2 एन + 1 लॉग इन करें ... इसलिए यदि रजिस्टर / कैश एक्सेस सस्ता है और सरणी का उपयोग महंगा है, तो अंत से खोज और रास्ते में शिफ्टिंग (होशियार) प्रविष्टि के लिए बुलबुला सॉर्ट) बेहतर हो सकता है, हालांकि एसिम्पोटिक रूप से ऐसा नहीं है।2n+1logn+2n+1
एक बेहतर समाधान में एक अलग डेटा संरचना का उपयोग करना शामिल हो सकता है। Arrays आपको O (1) एक्सेस (रैंडम एक्सेस) देता है, लेकिन प्रविष्टि और विलोपन में लागत आ सकती है। एक हैश तालिका में O (1) प्रविष्टि और विलोपन हो सकते हैं, एक्सेस की लागत होगी। अन्य विकल्पों में BST और ढेर शामिल हैं, आदि यह आपके आवेदन की प्रविष्टि, विलोपन और पहुंच के लिए उपयोग की जरूरतों पर विचार करने के लायक हो सकता है, और अधिक विशिष्ट संरचना चुन सकता है।
ध्यान दें कि यदि आप n तत्वों के क्रमबद्ध सरणी में तत्वों को जोड़ना चाहते हैं, तो एक अच्छा विचार हो सकता है कि आप m आइटम को कुशलता से सॉर्ट करें , फिर दो सरणियों को मर्ज करें; इसके अलावा, सॉर्ट किए गए सरणियों को उदाहरण के लिए ढेर (ढेर प्रकार) का उपयोग करके कुशलता से बनाया जा सकता है।mnm