2010-11-28 11 views
6

आप में से कुछ इस सुंदर लेख पर ठोकर खाई हो सकता है - http://igoro.com/archive/quicksort-killer/ \के बारे में त्वरित क्रमबद्ध खूनी

क्या वाकई दिलचस्प है कि कैसे वह जल्दी प्रकार (एन लॉग ऑन एन) में परिभाषित किया गया विरोधी के खिलाफ हे में प्रदर्शन करने के लिए ठीक करता है।

क्विक्सॉर्ट प्रत्येक चरण में पिवट के रूप में औसत तत्व का चयन कर सकता है, इस प्रकार हमेशा इनपुट अनुक्रम का एक पूर्ण विभाजन दो हिस्सों में प्राप्त कर सकता है। मध्यस्थ ओ (एन) चलने का समय निर्धारित रूप से पाया जा सकता है, और इसलिए कुल चलने का समय हमेशा ओ (एन लॉग एन) होता है।

मेरा प्रश्न रेखीय समय मंझला खोजने एल्गोरिथ्म एक ही समारोह की तुलना और हे (एन^2) हे (एन) के बजाय में प्रदर्शन का उपयोग कर खत्म नहीं होगा?

संपादित करें:

सटीक होना: मैं विभाजन आधारित मंझला-चयन एल्गोरिथ्म जो एक रणनीति त्वरित तरह और यह एक ही एक के रूप में समारोह की तुलना का उपयोग करेगा के समान का उपयोग करता है की जटिलता पर सवाल कर रहा हूँ त्वरित प्रकार का उपयोग करता है। यह इस विरोधी के साथ ओ (एन) में कैसे काम कर सकता है?

+0

संपादित करें पुन: तुलनात्मक कार्य में जटिलता से कोई लेना देना नहीं है, और मध्य चयन ओ (एन) है। –

उत्तर

5

रैखिक समय मंझला खोजने कलन विधि का उपयोग एक ही समारोह की तुलना और हे में प्रदर्शन नहीं करना पड़ेगा (एन^2) हे (एन) के बजाय ?

नहीं है, मंझला जटिलता को खोजने के लिए एक हे (एन) समारोह जोड़कर हो जाता है

O((N+N) log N) == O(2N log N) == O(N log N) 

लेकिन, जैसा कि उस लेख राज्यों, वृद्धि की लगातार यह बदसूरत बना देता है।

मानक तकनीक को मेडियन-ऑफ -3 कहा जाता है और एक पूर्ण औसत खोज उस पर वास्तव में सुधार नहीं करेगी।

यदि सबसे खराब मामला महत्वपूर्ण है, तो बस Quicksort का उपयोग न करें। शेलसॉर्ट में बेहतर ऊपरी है।

+0

निश्चित रूप से, मुझे वह बिंदु मिल गया। मैं औसत खोज एल्गोरिदम की जटिलता पर सवाल उठा रहा हूं। रैखिक समय औसत खोज एक त्वरित रणनीति के समान रणनीति का उपयोग करता है, है ना? और यह एक ही तुलना समारोह का उपयोग करेगा। यह तुलनात्मक कार्य के साथ ओ (एन) में कैसे काम कर सकता है? –

+0

मैं देख रहा हूं कि आप क्या कह रहे हैं। मेडियन ऑफ -3 के बारे में पढ़ा जाएगा। –

+0

मुझे विकिपीडिया पर मिला कि एक मध्य चयन ओ (एन) है लेकिन यह सरल से बहुत दूर है। –