मैं g12code पर java.util.ArrayList के sort() विधि के स्रोत कोड को देख रहा था। वे छोटे सरणी (आकार < 7) पर सम्मिलन प्रकार का उपयोग करते हैं और बड़े सरणी पर सॉर्ट मर्ज करते हैं। मैं बस सोच रहा था कि क्या इससे बहुत अंतर आता है कि वे केवल < आकार के सरणी के लिए सम्मिलन प्रकार का उपयोग करते हैं। चलने वाले समय में अंतर आधुनिक मशीनों पर शायद ही ध्यान देने योग्य होगा।Java.util.ArrayList.sort() सॉर्टिंग एल्गोरिदम
मैं Cormen में यह पढ़ा है:
हालांकि मर्ज प्रकार हे में चलता है (एन * logn) (एन * एन) बुरी से बुरी हालत समय और प्रविष्टि प्रकार हे में चलता बुरी से बुरी हालत समय, निरंतर सम्मिलन क्रम में कारक कई मशीनों पर छोटी समस्या के आकार के लिए अभ्यास में तेजी से बना सकते हैं। इस प्रकार, subproblems पर्याप्त रूप से छोटे होने पर विलय प्रकार के भीतर सम्मिलन प्रकार का उपयोग कर रिकर्सन की पत्तियों को मजबूत करने के लिए समझ में आता है।
मैं कुछ घटक है जो मैं की आवश्यकता के लिए एल्गोरिथ्म छँटाई के लिए बनाया गया है |, तो मैं, समय चलाने में अधिक से अधिक आकार अंतर से पहले (शायद आकार < 100 तक) के लिए प्रविष्टि-तरह के उपयोग पर विचार के रूप में तरह विलय की तुलना , स्पष्ट हो जाता है।
मेरा प्रश्न है आकार < 7 पर पहुंचने के पीछे विश्लेषण क्या है?
मुझे अब आपका कुछ बिंदु मिल रहा है। मान लीजिए कि अगर हमारे पास एक बहुत बड़ी सरणी थी, तो इसे फिर से क्रमबद्ध करने से सरणी को कई छोटे सरणी में विभाजित कर दिया जाएगा। यही वह जगह है जहां मुझे लगता है कि सम्मिलन की दक्षता की क्षमता अपने काम को करने में सक्षम है। –
@ sultan.of.swing: बिल्कुल। – NPE
हाँ, मुझे लगता है कि मेरे प्रश्न का उत्तर दें। सिवाय इसके कि मुझे आकार सात चुनने की अवधारणा में विश्वास करने के लिए बेंचमार्किंग परिणामों का विश्लेषण करने की आवश्यकता होगी :) –