2011-05-11 12 views
7

लागू करता है। क्या कोई भी कृपया सलाह दे सकता है कि .NET में IComparable जैसे कुछ को कार्यान्वित करना क्या एल्गोरिदम सॉर्ट करता है .NET उपयोग वास्तव में अंतर्निहित डेटा को सॉर्ट करने के लिए करता है? एल्गोरिदम भी अनुकूलन योग्य या चयन योग्य है?क्या सॉर्टिंग एल्गोरिदम एनईटी फ्रेमवर्क

+0

http://stackoverflow.com/questions/204805/which-sorting-algorithm-is-used-by-net-in-icomparer या http://stackoverflow.com/questions/1854604/which-sorting- एल्गोरिदम -used-in-net-arrays-sort-method-array-sort मुझे आश्चर्य है कि 'नया प्रश्न' संवाद बॉक्स आपको यह दर्ज करने पर समान प्रश्न नहीं दिखाता है। मुझे आश्चर्य नहीं है कि किसी ने पूछने से पहले खोज नहीं की थी। –

+0

[यह बदल गया है] (https://msdn.microsoft.com/en-us/library/6tf1f0bc ​​(v = vs.100) .aspx) .NET 4.5 के बाद से: अब एन <16 के लिए सम्मिलन क्रम, अन्यथा शुरू होता है Quicksort और Heapsort के लिए स्विच जब विभाजन की संख्या (रिकर्सन गहराई?) 2 * लॉग^एन से अधिक है। बुलाया गया: [Introsort] (https://en.wikipedia.org/wiki/Introsort) – Laoujin

उत्तर

14

दो बड़ी हैं।

Array.Sort (जिसमें जगह एक सरणी सॉर्ट करता है) एक unstableQuicksort उपयोग करता है।

इस विधि Array.Sort उपयोग करता है, जो quicksort एल्गोरिथ्म का उपयोग करता:

यह वही List<T>.Sort द्वारा आंतरिक रूप से उपयोग कार्यान्वयन, MSDN प्रलेखन के अनुसार है।

Enumerable.OrderBy<TSource, TKey> विधि (जो एक इनपुट अनुक्रम का एक प्रतिलिपि सॉर्ट करता) एक स्थिर quicksort उपयोग करता है।

जहां तक ​​मुझे पता है, ये .NET BCL में केवल दो सॉर्टिंग कार्यान्वयन हैं।

4

MSDN Documentation बताता है कि सॉर्टिंग एल्गोरिदम का उपयोग क्विक्सोर्ट (कम से कम सरणी के लिए) होता है - यह चयन योग्य या अनुकूलन योग्य नहीं है।

ध्यान दें कि यह IComparable इंटरफ़ेस नहीं है जो निर्दिष्ट करता है कि किस प्रकार की सॉर्टिंग विधि का उपयोग करना है, यह सॉर्टिंग (आमतौर पर एक सरणी या सूची, लेकिन यह कोई विधि हो सकती है) के लिए नीचे है, उदाहरण के लिए यह पूरी तरह से है पूरी तरह से अलग एल्गोरिदम का उपयोग करके क्रमबद्ध करने के लिए सरणी और Lists के लिए संभव है (हालांकि वास्तविकता दोनों में क्विक्सोर्ट का उपयोग करें)

इसका मतलब है कि यदि आप वास्तव में चाहते हैं कि आप वैकल्पिक एल्गोरिदम का उपयोग करके अपनी सॉर्टिंग विधि को कार्यान्वित कर सकें।

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