2009-10-03 11 views
9

मेरे पास स्ट्रिंग्स की एक सूची है जिसे एक विशिष्ट तुलना फ़ंक्शन द्वारा क्रमबद्ध किया गया है।कौन सा सॉर्टिंग एल्गोरिदम लगभग पूरी तरह से क्रमबद्ध सूची को फिर से क्रमबद्ध करने के लिए सबसे उपयुक्त है?

अब मुझे विभिन्न तुलना फ़ंक्शन का उपयोग करके इस सूची को फिर से क्रमबद्ध करना होगा।

उदाहरण के लिए उमलॉट्स जैसे कुछ विशेष पात्रों की तुलना करते समय यह नया तुलना फ़ंक्शन थोड़ा अलग व्यवहार करता है। ज्यादातर मामलों में तत्व को सही स्थिति में जाने के लिए केवल एक या दो स्लॉट ले जाया जाना चाहिए।

कौन सा सॉर्टिंग एल्गोरिदम रनटाइम निष्पादन गति के मामले में लगभग पूरी तरह क्रमबद्ध सूची को पुन: क्रमबद्ध करने के लिए सबसे उपयुक्त है?

+1

क्या आप वास्तव में एक * एल्गोरिदम * या सिर्फ एक उदारवादी खोज रहे हैं? –

+2

यह एक एल्गोरिदम है ... –

+0

संभावित डुप्लिकेट [किस प्रकार एल्गोरिदम अधिकतर सॉर्ट किए गए डेटा पर सबसे अच्छा काम करता है?] (Http://stackoverflow.com/questions/220044/which-sort-algorithm-works-best-on-mostly- सॉर्ट किए गए डेटा) – nawfal

उत्तर

14

Insertion sort छोटी या लगभग क्रमबद्ध सूचियों पर अच्छी तरह से काम करता है।

इस ACM Paper से: सूची लंबाई और छोटे sortedness अनुपात की विभिन्न संयोजनों की अनियमित रूप से उत्पन्न सूचियों पर

टेस्ट संकेत मिलता है कि सीधे निवेशन छोटे या बहुत करीब क्रमबद्ध सूचियों और उस के लिए है क्रमबद्ध सबसे अच्छा क्विकर्सोर्ट अन्यथा सर्वोत्तम है।

विकी लेख Insertion sort से:

इनपुट सरणी पहले से ही हल कर रहा है, तो प्रविष्टि प्रकार के रूप में कुछ के रूप में n-1 तुलना करता है, इस प्रकार प्रविष्टि तरह अधिक कुशल जब दी बनाने अनुसार क्रमबद्ध या "लगभग क्रमबद्ध" सरणी।

तो सवाल: Is there ever a good reason to use Insertion Sort?

+1

ध्यान दें कि क्विकरॉर्ट क्विकॉर्ट नहीं है, लेकिन एक करीबी समानता है; आधुनिक शब्दावली में, क्विकरॉर्ट को क्विकस्टोर्ट का एक संस्करण समझा जा सकता है जो हमेशा छोटे सबसेट को पहले करता है (रिकर्सन के लिए स्टैक गहराई को कम करता है) और जिसमें एक साधारण विभाजन चयन मानदंड है जो शायद खराब बुरे केस प्रदर्शन के लिए अतिसंवेदनशील है, लेकिन जो अच्छी तरह से काम करेगा यहां चर्चा के तहत लगभग क्रमबद्ध मामला। –

+0

यह भी बबल सॉर्ट http://en.wikipedia.org/wiki/Bubble_sort – Max

+0

@ मैक्स के साथ समान है: वास्तव में नहीं (@ हेनक और मुझे थोड़ी देर पहले यह भ्रम था)। बबलस्टोर्ट को सामान्य रूप से किसी भी कारण से उपयोग नहीं किया जाता है, अन्य डेवलपर इसे कॉलेज से याद करता है और यह सरल है (लेकिन सम्मिलन प्रकार से कहीं अधिक सरल नहीं है), और यह सामान्य उद्देश्य की तरह लगता है और जब वे यादृच्छिक रूप से आदेशित वस्तुओं की एक छोटी संख्या के साथ परीक्षण करते हैं तो तेज़ होता है। एक विशिष्ट परिदृश्य में सम्मिलन क्रम का चयन किया जा रहा है। –

0

दोनों खोज संचालन के लिए उपयोग है? यदि हां, तो आप पहले सॉर्टिंग प्रक्रिया के दौरान कुछ हैश पेड़ का निर्माण कर सकते हैं और इसे अन्य प्रकार के संचालन के लिए उपयोग कर सकते हैं

0

जैसा कि मैंने समझा है कि आपकी डेटा सूची पहले से ही क्रमबद्ध है (एएससीआई/देश वर्णसेट ऑर्डर द्वारा कहें), लेकिन कुछ शब्दकोश नियमों के बिना विशेष देश के लिए आवेदन किया। उदाहरण जर्मनी और उनके Umlauts लिए

विकिपीडिया

आप नए आइटम डालने नहीं कर रहे हैं में Germanic_umlaut देखते हैं, तो आप सिर्फ थोड़ा और अधिक सख्त छंटाई नियम से उन्हें सहारा करना चाहते हैं।

के रूप में आप यहाँ

http://www.softpanorama.org/Algorithms/Sorting/bubblesort.shtml

बुलबुला तरह बस कुछ ही क्रमपरिवर्तन साथ allready अनुसार क्रमबद्ध सूची पर अच्छी तरह से काम उदाहरण के लिए पढ़ सकते हैं। यह लगता है कि बबल प्रकार के साथ शुरू करने के लिए अच्छा एल्गोरिदम है। यह भी ध्यान रखें कि बबल प्रकार "स्थिर" सॉर्टिंग एल्गोरिदम है। यह आपके परिदृश्य के लिए महत्वपूर्ण हो सकता है।

0

लगभग क्रमबद्ध सूचियों के लिए, Comb की विविधताएं Quicksort से बेहतर प्रदर्शन करती हैं। मैंने यह देखने के लिए परीक्षण नहीं किया है कि कैसे कंघी सॉर्ट सम्मिलन प्रकार से तुलना करता है।

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

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