छंटाई एल्गोरिथ्म के लिए "स्थिर" होने का क्या मतलब है?


43

विभिन्न छँटाई एल्गोरिदम के बारे में पढ़ने में मैंने यह उल्लेख किया है कि कुछ "स्थिर" हैं और कुछ नहीं हैं। एल्गोरिथ्म का चयन करते समय इसका क्या अर्थ है, और उस आधार पर क्या ट्रेडऑफ़ शामिल हैं?


32
इस प्रश्न का उत्तर विकिपीडिया के साथ एक मिनट में आसानी से मिल जाएगा। en.wikipedia.org/wiki/Sorting_al एल्गोरिदम
घोड़ी इनफिनिटस

5
@MareInfinitus और अधिक सटीक: en.wikipedia.org/wiki/Sorting_algorithm#Stability
BStовић

4
यह एक सवाल है जिसमें खुद के शोध का अभाव है। एक विकिपीडिया चित्र के साथ उत्तर दिया। और इसे वास्तव में अच्छी प्रतिक्रिया मिलती है, जो किसी तरह मुझे दुखी करती है। IMHO इसे बंद कर दिया जाना चाहिए, और उठना नहीं चाहिए।
मारे इन्फिनिट्स

4
दूसरी ओर, मैंने बस इसे देखा और कुछ नया सीखा। अगर मुझे पता था कि मुझे यह नहीं पता है, तो मैं इस पर शोध कर सकता था, लेकिन क्योंकि ओपी ने सवाल पूछा था कि अब मुझे पता है कि मुझे नहीं पता था कि मुझे नहीं पता था।
कज़र्क

4
आमतौर पर, "बस Google यह" या "विकिपीडिया पर इसे देखो" StackExchange साइटों पर काफी स्वीकार्य प्रतिक्रियाएं नहीं हैं। क्योंकि वे इस बात का जवाब नहीं देते हैं कि शिकायतकर्ता Google और विकिपीडिया के अधिकारियों को कॉल के साथ एक वैध प्रश्न के रूप में क्या सत्यापित कर रहा है। यदि प्रश्न आसानी से प्रोग्रामर.स्टैकएक्सचेंज के भीतर किसी अन्य प्रश्न या प्रश्नों का डुप्लिकेट है, तो आप शिकायत कर सकते हैं।
माइकल पॉलुकोनिस

जवाबों:


88

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

एक सॉर्टिंग एल्गोरिथ्म पर विचार करें जो रैंक द्वारा कार्ड को सॉर्ट करता है , लेकिन सूट द्वारा नहीं। स्थिर क्रम यह गारंटी देगा कि एक ही रैंक वाले कार्डों का मूल क्रम संरक्षित है; अस्थिर प्रकार नहीं होगा।

यहाँ छवि विवरण दर्ज करें


38
सुधार: अस्थिर एल्गोरिथ्म अपरिभाषित व्यवहार प्रदर्शित करता है जब दो तत्व समान होते हैं, यह पूरी तरह से संभव है कि आदेश कभी-कभी संरक्षित होता है।
आआआआआआआआआआआ आआआआआआआआआआआआआआआआआ

9
अच्छी तस्वीर, विकिपीडिया en.wikipedia.org/wiki/Sorting_algorithm की
घोड़ी इनफिनिटस

9
@MareInfinitus: यह पब्लिक डोमेन में है। मूल छवि पर अटेंशन की जाँच करें।
रॉबर्ट हार्वे

2
एक अच्छी तस्वीर औसत मामले पर बहुत सारे शब्दों की तुलना में तेज और गहरी व्याख्या करती है। कानूनी मुद्दे वो नहीं थे जो मैं बात करना चाहता था।
घोड़ी इन्फिनिटस

3
@ रोबर्टहाइवे वास्तव में, मेरा मानना ​​है कि संपादक सही है। आपकी पोस्ट वर्तमान में कहती है कि एक स्थिर प्रकार एक ही सूट में कार्ड के आदेश को संरक्षित करता है, लेकिन एक ही सूट में कार्ड में अलग-अलग रैंक होंगे और इस प्रकार क्रमबद्ध क्रम को प्राप्त करने के लिए इसे फिर से व्यवस्थित करना होगा। उदाहरण के लिए, क्रम 2 और 5 के दिलों के क्रम को संरक्षित नहीं करता है। यह एक ही रैंक (और अलग-अलग सूट) वाले कार्डों का क्रम है जो स्थिर और अस्थिर के बीच अंतर करता है।
डेविड जेड

26

स्थिर एल्गोरिदम तत्वों के सापेक्ष क्रम को संरक्षित करता है।

तो एक स्थिर छँटाई एल्गोरिथ्म मूल्यों के सापेक्ष क्रम को बनाए रखेगा जो समान के रूप में तुलना करता है।

एक सॉर्टिंग एल्गोरिथ्म पर विचार करें जहां हम उनके एक्स आयाम के आधार पर 2d अंक का संग्रह सॉर्ट करते हैं।

संग्रहित किया जाना है: {(6, 3), (5, 5), (6, 1), (1, 3)}

स्थिर क्रमबद्ध: {(1, 3), (5, 5), (6, 3), (6, 1)}

नियमित रूप से छाँटे गए: या तो {(1, 3), (5, 5), (6, 3), (6, 1)}, या{(1, 3), (5, 5), (6, 1), (6, 3)}


ट्रेडऑफ़ के लिए ... ठीक है, स्थिर छँटाई कम कुशल है, लेकिन कभी-कभी आपको इसकी आवश्यकता होती है।

उदाहरण के लिए, जब कोई उपयोगकर्ता UI में मानों को सॉर्ट करने के लिए एक स्तंभ शीर्षलेख पर क्लिक करता है, तो यह समान मूल्यों के मामले में उसके पिछले क्रमबद्ध आदेश का उपयोग करने के लिए उचित है।


2
हालांकि यह कम कुशल है? ऐसा लगता है कि "स्पष्ट" है, लेकिन कुछ सर्वश्रेष्ठ सॉर्टिंग एल्गोरिदम प्रकृति द्वारा स्थिर हैं (जैसे कि मर्ज सॉर्ट पर आधारित कुछ भी, जैसे कि टिम सॉर्ट), उन्हें स्थिर होने के लिए कोई स्पष्ट अतिरिक्त काम करने की आवश्यकता नहीं है।

9
स्टेबल का सामान्य तौर पर प्रदर्शन से कोई लेना-देना नहीं है। Mergesort O (n * log n) में चलता है और स्थिर है। हीप्सोर्ट का प्रदर्शन समान है, लेकिन स्थिर नहीं है।
घोड़ी इन्फिनिटस

2
"स्थिर" डेटा-संरचनाओं पर भी लागू हो सकता है, उदाहरण के लिए। "स्टेबल हीप" एक ढेर है जो उन वस्तुओं को हटाता है जिनकी उसी क्रम में समान प्राथमिकता होती है जिस क्रम में वे कतारबद्ध थे। कुशल पथ-खोज एल्गोरिदम के लिए यह बहुत महत्वपूर्ण है।
ब्लूराजा - डैनी पफ्लुगुएफ्ट

1
कोई स्थिर प्रकार नहीं हैं जो O (n ln n) तुलना हैं और स्मृति पर O (1) भी हैं । गति दक्षता का एकमात्र उपाय नहीं है। यह तथ्य कि आप इन-प्लेस मामलों को स्थिर नहीं कर सकते।
प्रश्न पत्र

3
@QuestionC ऐसा प्रतीत होता है कि ब्लॉक सॉर्ट स्थिर है और उन सीमाओं को फिट करता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.