📘 CodingMarble Learn

सॉर्टिंग एल्गोरिदम (छाँटने के तरीक़े)

सॉर्टिंग एल्गोरिदम किसी सूची को क्रम में लगाता है। बबल सॉर्ट पड़ोसियों की अदला-बदली करता है, इंसर्शन सॉर्ट हर चीज़ को छँटे हिस्से में सही जगह खिसकाता है, सिलेक्शन सॉर्ट हर बार सबसे छोटा चुनता है, और मर्ज सॉर्ट सूची को तोड़कर छँटे हिस्से जोड़ता है। लंबी सूची पर मर्ज सॉर्ट बहुत कम तुलनाएँ करता है (लगभग n²/2 की जगह n log₂ n)।

🎬 कदम-दर-कदम कहानी

  1. यह 8 संख्याओं की सूची है। छाँटना यानी इन्हें छोटे से बड़े क्रम में लगाना।
  2. बबल सॉर्ट: दो पड़ोसियों की तुलना करो। ग़लत क्रम में हों तो अदला-बदली करो। एक चक्कर (pass) के बाद सबसे बड़ी संख्या अंत में (हरी) पहुँच जाती है।
  3. इंसर्शन सॉर्ट: बाईं ओर का हिस्सा पहले से छँटा है। अगली संख्या उठाओ और बाईं ओर तब तक खिसकाओ जब तक सही जगह न मिले, जैसे हाथ में ताश के पत्ते।
  4. सिलेक्शन सॉर्ट: बची हुई संख्याओं में सबसे छोटी ढूँढो। उसे आगे की अगली जगह पर रखो। दोहराओ।
  5. मर्ज सॉर्ट: सूची को आधा करो, फिर आधा, जब तक हर टुकड़े में एक संख्या न रहे। फिर टुकड़ों को क्रम से जोड़ो (नीला = जुड़ रहा हिस्सा)।
  6. तुम्हारी बारी: तरीका चुनो, सूची मिलाओ और चलाओ। तुलना और अदला-बदली के काउंटर देखो।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

एक बबल पास के बाद सबसे बड़ी संख्या अंत में क्यों पहुँचती है?

सबसे बड़ी संख्या तक पहुँचते ही वह हर तुलना जीतती है, इसलिए अंत तक बदलती चली जाती है। कदम 2 देखो।

इसे “इंसर्शन” (डालना) सॉर्ट क्यों कहते हैं?

हर नई चीज़ बाईं ओर के छँटे हिस्से में सही जगह डाली जाती है, जैसे हाथ में पत्ता घुसाना। कदम 3 देखो।

क्या सिलेक्शन सॉर्ट बहुत बार अदला-बदली करता है?

नहीं, हर जगह के लिए ज़्यादा से ज़्यादा एक बार। तुलना बहुत, अदला-बदली कम। कदम 4 में गिनो।

मर्ज सॉर्ट में एक-एक चीज़ तक क्यों तोड़ते हैं?

एक चीज़ की सूची हमेशा छँटी होती है, तो वहीं से छँटी सूचियाँ जोड़ना शुरू कर सकते हैं। कदम 5 देखो।

मर्ज सॉर्ट ज़्यादा कदम करता लगता है, फिर तेज़ कैसे?

हर जोड़ स्तर पर लगभग n तुलनाएँ और स्तर सिर्फ़ log₂ n। खेल वाले कदम में बबल और मर्ज के काउंटर मिलाओ।

क्या सब तरीक़े एक ही अंतिम सूची देते हैं?

हाँ। फ़र्क़ सिर्फ़ मेहनत का है। एक ही मिली हुई सूची पर हर तरीका चलाकर देखो।

छाँटने का मतलब क्या है?

सॉर्टिंग यानी चीज़ों को क्रम में लगाना। क्रम आरोही (छोटे से बड़ा, A से Z) या अवरोही (बड़े से छोटा) हो सकता है।

क्यों छाँटें? छँटी सूची में खोजना तेज़ है (बाइनरी सर्च लगा सकते हैं), पढ़ना आसान है, और सबसे छोटा, सबसे बड़ा या बीच का मान तुरंत मिलता है।

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

बबल सॉर्ट

सूची में बाएँ से दाएँ चलो। हर पड़ोसी जोड़े की तुलना करो। बायाँ बड़ा हो तो अदला-बदली करो। यह एक पास है। पहले पास के बाद सबसे बड़ी चीज़ बुलबुले की तरह “तैरकर” अंत में पहुँच जाती है।

पास दोहराओ। हर पास एक जगह पहले रुक सकता है। किसी पास में एक भी अदला-बदली न हो तो सूची छँट गई — जल्दी रुक जाओ।

repeat
  swapped ← false
  for i ← 0 to n − 2
    if A[i] > A[i+1] then
      swap A[i], A[i+1]
      swapped ← true
until swapped = false

सबसे ख़राब स्थिति: लगभग n²/2 तुलनाएँ। लिखना आसान, बड़ी सूची पर धीमा।

इंसर्शन सॉर्ट

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

जब सूची लगभग छँटी हो, तब यह बहुत तेज़ है, और छोटी सूचियों पर अच्छा चलता है। सबसे ख़राब स्थिति (उल्टी सूची): लगभग n²/2 तुलनाएँ।

सिलेक्शन सॉर्ट और काउंटिंग सॉर्ट

सिलेक्शन सॉर्ट: पूरी सूची में सबसे छोटी चीज़ ढूँढो और पहली जगह पर रखो (अदला-बदली)। बाक़ी में सबसे छोटी ढूँढो, दूसरी जगह पर रखो। ऐसे ही आगे। तुलनाएँ हमेशा लगभग n²/2, पर अदला-बदली ज़्यादा से ज़्यादा n − 1।

काउंटिंग सॉर्ट: जब मान छोटी पूर्ण संख्याएँ हों, जैसे 10 में से अंक। आवृत्ति सूची बनाओ: कितने 0, कितने 1, … कितने 10। फिर हर मान को उतनी बार लिख दो जितनी बार गिना। कोई तुलना नहीं!

मर्ज सॉर्ट: बाँटो और जीतो

बाँटो: सूची को दो आधों में तोड़ो। हर आधे को फिर तोड़ो, जब तक हर टुकड़े में एक चीज़ न रहे (एक चीज़ की सूची पहले से छँटी है)।

जोड़ो (merge): दो छँटी सूचियों के आगे वाले मानों को देखो और छोटा वाला उठाओ, बार-बार।

उदाहरण: [2, 5] और [1, 8] जोड़ो: 1 लो, फिर 2, फिर 5, फिर 8 → [1, 2, 5, 8]।

n चीज़ों की सूची लगभग log₂ n बार आधी होती है, और हर स्तर पर जोड़ने में लगभग n तुलनाएँ। इसलिए मर्ज सॉर्ट लगभग n log₂ n तुलनाएँ करता है। इसे जोड़ी गई सूची के लिए अतिरिक्त मेमोरी चाहिए।

तरीक़ों की तुलना

एल्गोरिदमतुलनाएँ (बड़ी सूची)अतिरिक्त मेमोरीकिसके लिए अच्छा
बबललगभग n²/2नहींसीखने, बहुत छोटी सूची
इंसर्शनलगभग n²/2 (लगभग छँटी हो तो कम)नहींछोटी या लगभग छँटी सूची
सिलेक्शनलगभग n²/2नहींजब कम अदला-बदली चाहिए
मर्जलगभग n log₂ nहाँबड़ी सूची

1,000 चीज़ों के लिए: n²/2 = 5,00,000 तुलनाएँ, पर n log₂ n ≈ 10,000। इसीलिए बड़े डेटा पर मर्ज सॉर्ट जीतता है।

करके देखो: हाथ से पत्ते छाँटो

8 ताश के पत्ते (या संख्या लिखी पर्चियाँ) लो। तीन बार छाँटो: बबल, इंसर्शन और मर्ज सॉर्ट से। हर तुलना पर एक लकीर खींचो। किस तरीक़े में सबसे कम लकीरें आईं? फिर 3D के खेल वाले कदम में काउंटर से मिलान करो।

मुख्य सूत्र और परिभाषाएँ

हल किए गए उदाहरण

1. [5, 2, 8, 1, 6] पर बबल सॉर्ट का पहला पास दिखाओ।

5>2 बदलो → [2,5,8,1,6]; 5<8 नहीं; 8>1 बदलो → [2,5,1,8,6]; 8>6 बदलो → [2,5,1,6,8]। पहले पास के बाद [2, 5, 1, 6, 8]; 8 अपनी पक्की जगह पर।

2. [4, 1, 3, 2] पर इंसर्शन सॉर्ट। हर बार डालने के बाद सूची दिखाओ।

1 डालो → [1, 4, 3, 2]। 3 डालो → [1, 3, 4, 2]। 2 डालो → [1, 2, 3, 4]।

3. [7, 3, 9, 1] पर सिलेक्शन सॉर्ट। कितनी अदला-बदली हुई?

सबसे छोटा 1 → 7 से बदलो: [1, 3, 9, 7]। बाक़ी में सबसे छोटा 3, पहले से सही जगह। [9, 7] में सबसे छोटा 7 → बदलो: [1, 3, 7, 9]। 2 अदला-बदली।

4. मर्ज सॉर्ट [6, 2, 7, 3] को कैसे छाँटता है?

तोड़ो: [6, 2] और [7, 3] → [6] [2] [7] [3]। जोड़ो: [2, 6] और [3, 7]। इन्हें जोड़ो: 2, 3, 6, 7 → [2, 3, 6, 7]।

5. अंक [3, 1, 3, 0, 2, 1, 3] (3 में से) को काउंटिंग सॉर्ट से छाँटो।

गिनती: 0→1, 1→2, 2→1, 3→3। लिखो: [0, 1, 1, 2, 3, 3, 3]।

6. 10 चीज़ों पर बबल सॉर्ट सबसे ख़राब स्थिति में कितनी तुलनाएँ करेगा (जल्दी रुके बिना)? मर्ज सॉर्ट लगभग कितनी?

बबल: 9 + 8 + … + 1 = 45। मर्ज: लगभग 10 × log₂10 ≈ 33 (असल में 10 चीज़ों के लिए ज़्यादा से ज़्यादा 25)।

आम गलतियाँ

अभ्यास क्विज़

1. बबल सॉर्ट (आरोही) के पहले पास के बाद कौन-सी चीज़ पक्की जगह पर होती है?
2. कौन-सा एल्गोरिदम सूची को आधों में तोड़ता है?
3. कौन-सा सॉर्ट हाथ में ताश के पत्ते लगाने जैसा है?
4. बहुत बड़ी सूची पर प्रायः सबसे तेज़ कौन?
5. [1, 4] और [2, 3] को मर्ज करने पर:

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

सबसे अच्छा सॉर्टिंग एल्गोरिदम कौन-सा है?

कोई एक सबसे अच्छा नहीं। बड़ी सूची पर मर्ज सॉर्ट (और क्विकसॉर्ट) तेज़ हैं। छोटी या लगभग छँटी सूची पर इंसर्शन सॉर्ट बढ़िया है। बबल सॉर्ट मुख्यतः सीखने के लिए है।

बबल सॉर्ट और मर्ज सॉर्ट में क्या अंतर है?

बबल सॉर्ट बार-बार पास में पड़ोसियों की अदला-बदली करता है, लगभग n²/2 तुलनाएँ। मर्ज सॉर्ट सूची तोड़कर छँटे आधे जोड़ता है, लगभग n log₂ n तुलनाएँ, पर अतिरिक्त मेमोरी लगती है।

डेटा छाँटना क्यों ज़रूरी है?

छँटे डेटा में खोज तेज़ होती है (बाइनरी सर्च), पढ़ना आसान होता है, और सबसे छोटा, सबसे बड़ा और माध्यिका तुरंत मिलते हैं।

यह कहाँ पढ़ाया जाता है

पोलैंडLiceum ogólnokształcące, klasa IUnderstanding, analysing and solving problems
रोमानियाClasa a IX-aProblem-solving strategies
रोमानियाClasa a IX-aProblem-solving strategies
रोमानियाClasa a IX-aProblem-solving strategies
यूक्रेन11 класAlgorithms
इंग्लैंडYear 103.1 Fundamentals of algorithms
अमेरिकाGrade 11Data Collections
दक्षिण कोरिया고등학교 2학년Algorithms and programming
रूस9 классAlgorithms and programming
रूस11 классAlgorithms and programming

पहले यह पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ