पायथन के प्रकार () विधि में बनाया गया है


104

क्या एल्गोरिथ्म sort()पायथन में विधि का उपयोग कर बनाया गया है ? क्या उस पद्धति के लिए कोड पर एक नज़र रखना संभव है?


10
बेशक यह विधि के लिए कोड को देखना संभव है - पायथन एक ओपन-सोर्स प्रोजेक्ट है। विधि शायद सी में लागू की जाती है, हालांकि, आपको इसका कोई मतलब निकालने के लिए सी के बारे में थोड़ा जानना होगा।
क्रिस लुट्ज़

संस्करण क्या मायने रखता है?
मैड्रिड ऑम्बर्लिव ऑक्ट

@melder: नहीं =) मैं सिर्फ एक प्रो एल्गोरिथ्म पर एक नज़र रखना चाहते हैं: P @chris: कैसे?
जोहान्स

3
स्रोत कोड को पायथन इंटरप्रेटर में डाउनलोड करें। मुझे नहीं पता कि वे sort()विधि को कहां लागू करते हैं , या दुभाषिया के लिए प्रारूपण क्या है, लेकिन यह कहीं न कहीं वहाँ है, और मुझे लगता है कि यह गति चिंताओं के लिए सी में लागू है।
क्रिस लुत्ज़

यहाँ इसका एक उदाहरण दिया जा रहा है
हरि गणेशन

जवाबों:


119

ज़रूर! कोड है यहाँ , समारोह के साथ शुरू isltकाफी देर ;-) के लिए और आगे बढ़ने से। जैसा कि क्रिस की टिप्पणी से पता चलता है, यह सी कोड है। आप इस पाठ फ़ाइल को पाठ विवरण, परिणाम आदि के लिए पढ़ना चाहते हैं ।

यदि आप जावा कोड को सी कोड से पढ़ना पसंद करते हैं, तो आप जोशुआ बलोच के टाइमशॉर्ट के कार्यान्वयन में और जावा के लिए देख सकते हैं (जोशुआ भी वह व्यक्ति जिसने कार्यान्वित किया, 1997 में, संशोधित मर्जोर्ट जो अभी भी जावा में उपयोग किया जाता है, और एक उम्मीद कर सकता है कि जावा) अंततः अपने हाल के बंदरगाह के लिए स्विच करें)।

टिम पोर्ट के जावा पोर्ट की कुछ व्याख्या यहाँ है , अंतर यहाँ है (सभी आवश्यक फ़ाइलों की ओर संकेत के साथ), कुंजी फ़ाइल यहाँ है - एफडब्ल्यूआईडब्ल्यू, जबकि मैं जावा प्रोग्रामर की तुलना में बेहतर सी प्रोग्रामर हूं, इस मामले में मुझे लगता है जोशुआ का जावा कोड टिम के सी कोड ;-) की तुलना में अधिक पठनीय है।


4
@ क्रिस, "ब्राउज़ पाइथन स्रोत" मेरे सभी ब्राउज़रों के बुकमार्क बार में एक शॉर्टकट है - यह svn.python.org/view/python/trunk ;-) की ओर इशारा करता है
एलेक्स मार्टेली

मैं जानना चाहता हूं कि फ़ंक्शन क्या list_ass_item()करता है। :)
क्रिस लुट्ट्ज़

2
सूची के एक आइटम के लिए असाइनमेंट करता है (जैसे list_ass_slice सूची के एक टुकड़े को असाइनमेंट करता है), सॉर्टिंग के साथ कुछ नहीं करना है। मुझे लगता है कि "असाइनमेंट" का संक्षिप्त नाम मज़ेदार है ...
एलेक्स मार्टेली

3
वर्तमान संस्करण की listsort.txtहै कि पता आम भ्रम कुछ नोट कहते हैं।
टिम पीटर्स

31

मैं सिर्फ एक बहुत ही उपयोगी लिंक की आपूर्ति करना चाहता था जो कि मैंने एलेक्स के अन्यथा व्यापक उत्तर में याद किया: पायथन के समय की उच्च स्तरीय व्याख्या (ग्राफ विज़ुअलाइज़ेशन के साथ!)।

(हाँ, एल्गोरिथ्म मूल रूप से अब Timsort के रूप में जाना जाता है )


9

शुरुआती अजगर-संस्करणों में, सॉर्ट फ़ंक्शन ने एस्कॉर्ट के संशोधित संस्करण को लागू किया। हालांकि, यह अस्थिर माना जाता था और 2.3 के रूप में उन्होंने एक अनुकूली मर्जेस एल्गोरिथ्म का उपयोग करने के लिए स्विच किया।


quicksort को 'अस्थिर नहीं समझा जाता है' - आमतौर पर इस्तेमाल की जाने वाली परिभाषाओं के अनुसार, quicksort अस्थिर है - यही कारण है कि दो वस्तुओं का मूल क्रम संरक्षित नहीं है, यदि वे इस प्रकार के बराबर हैं। अस्थिर सॉर्ट एल्गोरिथ्म होने का मतलब है कि आपको सभी प्रकार के मानदंड के साथ 'मैजिक' को अलग-अलग तरीकों से डेटा को सॉर्ट करने के लिए आना होगा, बजाय इसके कि आप क्रमबद्ध कॉल को श्रृंखलाबद्ध करने में सक्षम हो सकते हैं - समयसीमा में यदि आप डीओबी द्वारा सॉर्ट करना चाहते हैं और फिर नाम , आप पहले नाम से क्रमबद्ध करें, और फिर DOB आप क्विकॉर्ट के साथ ऐसा नहीं कर सकते
टोनी सफ़ोकल 66
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.