मर्जर के बजाय इंट्रोवर्ट हीप्सोर्ट का उपयोग क्यों करता है?


9

परिचय के कार्यान्वयन को कवर करने वाले एक होमवर्क असाइनमेंट के हिस्से के रूप में, मुझे पूछा गया है कि मेज़र्ट्स (या अन्य एल्गोरिदम के बजाय उस मामले के लिए हीप्सोर्ट का उपयोग क्यों किया जाता है)। O(nlog(n))

इंट्रोसोर्ट एक हाइब्रिड सॉर्टिंग एल्गोरिथ्म है जो तेजी से औसत प्रदर्शन और (asymptotically) इष्टतम सबसे खराब प्रदर्शन दोनों प्रदान करता है। यह एस्कॉर्ट और स्विच से शुरू होता है जब रिकर्सन डेप्थ को सॉर्ट किए जा रहे तत्वों की संख्या के आधार पर रिकर्स की गहराई अधिक होती है। ( विकिपीडिया , 2014-मई -06 को पुनः प्राप्त किया गया।)

एकमात्र कारण जो मैं सोच सकता हूं वह यह है कि हीप्सोर्ट "जगह में है" ... लेकिन tbh मुझे वास्तव में समझ नहीं आया कि यह यहां क्यों मायने रखेगा।


3
यदि इंट्रोसर्ट सवाल का हिस्सा है, तो आपको हमें यह बताना होगा कि हम कुछ भी कह सकते हैं।
लुइस

1
कंप्यूटर विज्ञान में आपका स्वागत है ! ध्यान दें कि आप गणित को अधिक पठनीय तरीके से टाइप करने के लिए यहां लाटेक्स का उपयोग कर सकते हैं। संक्षिप्त परिचय के लिए यहां देखें ।
फ्रैंकडब्ल्यू

हमें बस इंट्रो सॉर्ट के लिए कुछ छद्म कोड बनाने के लिए कहा जाता है और बाद में हम से पूछा जाता है कि यह मर्ज के बजाय हीप्सॉर्ट का उपयोग क्यों करता है।
user672009

@ user672009 उस स्थिति में, या तो कोड लिखें और देखें कि आपको क्या मिलता है। कारण प्रदर्शन से संबंधित हो सकता है या नहीं भी हो सकता है।
राफेल

2
मैंने निष्कर्ष निकाला है कि चूंकि क्विकसॉर्ट सॉर्ट जगह में होता है इसलिए हमें दूसरी जगह पर एल्गोरिथ्म सॉर्ट करने की आवश्यकता होती है। हालांकि मैं इनपुट के लिए खुला हूं।
user672009

जवाबों:


9

क्विकॉर्ट्स के 2 डाउनसाइड्स यह है कि इसके लिए अतिरिक्त स्थान (अनसाल्टेड अंतराल रखने के लिए) और खराब पिवट चयन (या एक खराब पिवेट का चयन करने के लिए डिज़ाइन किया गया अनुक्रम) की आवश्यकता हो सकती है, जिससे यह ) हो सकता है। समय और अतिरिक्त स्थान एल्गोरिथ्म।O(logn)O(n2)O(n)

जब पुनरावृत्ति की गहराई बहुत बड़ी हो जाती है (लगभग ) हो जाता है, तो इसका मतलब है कि हमारे पास ऊपरी समय और अतिरिक्त स्थान है।lognO(nlogn)O(logn)

हीप्सर्ट का अतिरिक्त स्थान की आवश्यकता इसे मर्जर्ट्स के लिए बेहतर विकल्प बनाती है, जहां एक आकस्मिक सरणी के लिए कि अभी भी बड़ी हो सकती है।O(1)O(n)n

हेस्पोर्ट का उपयोग पूर्ण प्रकार के लिए नहीं किया जाता है, क्योंकि यह क्विकसॉर्ट की तुलना में धीमा है (बड़े ओ अभिव्यक्ति में छिपे हुए स्थिरांक के कारण और कैश व्यवहार के हिस्से में)


लेकिन हेप्सॉर्ट का उपयोग किया जाता है ... और मुझे संदेह है कि यह क्विकॉर्ट जैसी जगह पर है।
user672009

मुझे संदेह है कि @ user672009 आपके अंतिम वाक्य से भ्रमित है। मैं स्पष्ट करने का सुझाव देता हूं कि आत्मनिरीक्षण हाइपोसॉर्ट से शुरू नहीं होता है क्योंकि यह धीमा है।
भटकते हुए तर्क

@ user672009, स्पेस का अर्थ है "जगह में," और क्विकॉर्ट जगह में नहीं है क्योंकि इसके लिए अतिरिक्त स्थान की आवश्यकता होती है। O(1)O(lgn)
भटकते हुए तर्क

इसके अतिरिक्त, हीप्सोर्ट में इंट्रोसर्ट की तुलना में बहुत अधिक कैश मिस हैं।
no --zɐɹƆ

एक अच्छा क्विकसॉर्ट कार्यान्वयन को सबसे खराब स्थिति में ओ (एन) स्थान की आवश्यकता नहीं होती है, जब तक कि यह स्टैक पर बड़े उप-केंद्र को याद करता है, और तुरंत छोटे को संभालता है।
gnasher729
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.