2008-09-30 11 views
30

टिमसोर्ट एक अनुकूली, स्थिर, प्राकृतिक विलय है। यह आंशिक रूप से आदेश दिया सरणियों के कई प्रकार पर अलौकिक प्रदर्शन है (एलजी से भी कम समय (एन!) तुलना की जरूरत है, और के रूप में कुछ के रूप में एन -1), अभी तक के रूप में तेजी से अजगर की पिछली यादृच्छिक सरणियों पर अत्यधिक देखते samplesort संकर के रूप में ।timsort सामान्य उद्देश्य या पायथन-विशिष्ट है?

क्या आपने timsort को सीपीथॉन के बाहर उपयोग किया है? क्या इस का कोई मतलब निकलता है?

+0

आप क्यों पूछते हैं? अधिक संदर्भ के बिना , आपके प्रश्न का उत्तर नहीं दिया जा सकता है। – hop

+0

क्या आपने देखा है "क्या आपने सीपीथॉन के बाहर इस्तेमाल किए गए टाइम्सोर्ट को देखा है?" अंश? – Constantin

+2

मैंने इसे देखा है, और यह अभी भी हमें कोई संदर्भ नहीं देता है। आप एक साधारण "नहीं" से उत्तर के रूप में क्या सीखेंगे? – hop

उत्तर

28

हां, यह सामान्य रूप से, विशिष्ट रूप से, या पायथन के बाहर टाइमस्पोर्ट का उपयोग करने के लिए काफी समझ में आता है।

वर्तमान में जावा के "संशोधित विलय सॉर्ट" को टाइम्सॉर्ट के साथ बदलने के लिए effort underway है, और प्रारंभिक परिणाम काफी सकारात्मक हैं।

+2

जावा एसई 7 टिमसोर्ट का उपयोग करता है क्योंकि यह अब एल्गोरिदम है। देखें http://www.docjar.com/docs/api/java/util/Collections.html#sort(List) –

0

आपके द्वारा लिंक किया गया वर्णन पूरी तरह से सामान्य दिखता है।

+0

हां, लेकिन क्या आपने सीपीथॉन के बाहर इस्तेमाल किए गए टाइम्सोर्ट को देखा है? – Constantin

5

यह विशेष रूप से परिचित नहीं दिखता है, लेकिन "स्मार्ट" विलय सॉफ़्टवेयर की विस्तृत दुनिया में काफी आम हैं।

चाहे यह समझ में आता है कि यह आपके द्वारा क्रमबद्ध किए जाने पर निर्भर करता है, और तुलनात्मक रूप से स्मृति आवंटन की तुलनात्मक लागत पर निर्भर करता है। एक प्रकार जो अतिरिक्त स्मृति के 2 * एन बाइट्स की आवश्यकता है स्मृति-बाधित वातावरण में एक अच्छा विकल्प नहीं होने वाला है।

22

एल्गोरिदम बहुत सामान्य है, लेकिन लाभ पाइथन-विशिष्ट हैं। अधिकांश सॉर्टिंग रूटीन के विपरीत, पाइथन की list.sort (जो टाइम्सॉर्ट का उपयोग करती है) परवाह करता है, अनावश्यक तुलना से परहेज करता है, क्योंकि आम तौर पर तुलना लॉट आइटमों को स्वैप करने से अधिक महंगी होती है (जो हमेशा पॉइंटर प्रतियों का एक सेट होता है) या यहां तक ​​कि कुछ अतिरिक्त मेमोरी आवंटित करना (क्योंकि यह हमेशा पॉइंटर्स की एक सरणी है, और ओवरहेड किसी भी पायथन ऑपरेशन में औसत ओवरहेड की तुलना में छोटा है।)

यदि आप समान बाधाओं में हैं, तो यह उपयुक्त हो सकता है। मुझे अभी तक कोई अन्य मामला नहीं दिख रहा है, जहां तुलना वास्तव में महंगे हैं, हालांकि :-)

+0

यदि तुलना महंगा है, तो डेटा-विशिष्ट एल्गोरिदम आमतौर पर तुलना-आधारित एक से बेहतर प्रदर्शन करेगा। –

+0

यह एक अच्छा अवलोकन है, और वास्तव में मुख्य कारण है कि आप जंगली में timsort या इसके करीब कुछ भी नहीं देखेंगे। –

4

अब उत्तर दिया गया Wikipedia: timsort का उपयोग जावा 7 में किया जाएगा, जिसने इसे एंड्रॉइड से कॉपी किया था।

संबंधित मुद्दे