2011-01-05 14 views
39

यह मामूली हो सकता है, लेकिन मुझे समझ में नहीं आता कि Selection Sort का डिफ़ॉल्ट कार्यान्वयन स्थिर क्यों नहीं है?चयन क्यों स्थिर नहीं है?

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

मुझे क्या याद आ रही है?

उत्तर

64

एक छोटा सा उदाहरण:

चलो ख = (एक < ख < ग के साथ)

< B>, < b>, < एक>, < C> में बी

एक के बाद चक्र अनुक्रम को क्रमबद्ध किया गया है लेकिन बी और बी का क्रम बदल गया है:

< ए>, < बी>, < बी >, < सी>

लेकिन यदि आप स्विच करने के बजाय, न्यूनतम मान डालें, तो आप चयन क्रमबद्ध स्थिर लागू कर सकते हैं। लेकिन इसके लिए कुशल होने के लिए आपके पास एक डेटा संरचना होनी चाहिए जो कम लागत पर सम्मिलन का समर्थन करे या अन्यथा आप वर्गबद्ध जटिलता के साथ समाप्त हो जाएं।

+7

धन्यवाद, सरल और संक्षिप्त उदाहरण। ईश्वर, मेरी इच्छा है कि जब मैं वास्तव में अपना बीएस कर रहा था (10 साल पहले :) – ripper234

18

समस्या यह है कि चयन क्रम सरणी के मोर्चे से तत्वों को न्यूनतम तत्व द्वारा खाली स्थान पर स्थानांतरित कर देता है, जो सॉर्ट किए गए क्रम को गड़बड़ कर सकता है। उदाहरण के लिए, मान लीजिए मैं छँटाई कर रहा हूँ

(4, 0), (4, 1), (1, 0) 

चयन तरह पहले स्वैप (1, 0) सामने से:

(1, 0), (4, 1), (4, 0) 

और अब (4, 0) और (4, 1) वे इस तरह से शुरू करने के क्रम से बाहर हैं। इसे पूरा करने के लिए इसे चलाने से तत्वों को इस क्रम में छोड़ दिया जाता है, और 4 एस क्रम से बाहर होते हैं।

आशा है कि इससे मदद मिलती है!

-18

स्थिरता का अर्थ आगे की गणना नहीं करता है यदि तत्व पहले ही सॉर्ट किए गए हैं, लेकिन यह अंत तक गणना करता है इसलिए यह स्थिर नहीं है।

+12

नहीं, "स्थिर" का अर्थ है कि जब एक से अधिक तत्वों की एक ही तरह की कुंजी होती है, तो वे क्रमबद्ध आउटपुट में दिखाई देंगे आदेश में वे इनपुट में दिखाई दिया। –

+4

पूरी तरह गलत है। इस जवाब को अनदेखा करें। –

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