🔴 Advanced  ·  Lesson 42

Sorting Algorithms

Sorting क्या है?

Sorting का मतलब array को क्रम में लगाना है — आमतौर पर छोटे से बड़े। यह programming के सबसे आम कामों में से एक है, और हाथ से sort लिखना loops, comparisons और swapping एक साथ सिखाता है। यहाँ तीन classic beginner algorithms हैं, हर एक वही काम अलग तरीके से करता है।

तीनों array को जगह पर sort करते हैं और वही helper साझा करते हैं — दो elements का swap।

Bubble sort

हर पड़ोसी जोड़े की तुलना करें और गलत क्रम में होने पर swap करें। हर pass में सबसे बड़ी value अंत में "bubble" हो जाती है।

C Language
void bubbleSort(int a[], int n) {
    for (int i = 0; i < n - 1; i++)
        for (int j = 0; j < n - 1 - i; j++)
            if (a[j] > a[j + 1]) {
                int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;
            }
}

Dry run {5, 2, 4} पर — पहला pass: 5 और 2 तुलना → swap → {2,5,4}; 5 और 4 तुलना → swap → {2,4,5}। Sorted।

Selection sort

Unsorted हिस्से में सबसे छोटा element ढूँढें और उसे अगली स्थिति पर रखें। दोहराएँ।

C Language
void selectionSort(int a[], int n) {
    for (int i = 0; i < n - 1; i++) {
        int min = i;
        for (int j = i + 1; j < n; j++)
            if (a[j] < a[min]) min = j;   // sabse chhota dhoondhein
        int t = a[i]; a[i] = a[min]; a[min] = t;  // use rakhein
    }
}

हर दौर बचे हुए में से न्यूनतम चुनकर उसे जगह पर swap करता है — तो यह हर दौर में अधिकतम एक swap करता है।

Insertion sort

हर element को लेकर पहले से sorted elements में उसकी सही जगह पर सरका दें, जैसे हाथ में ताश के पत्ते क्रम में लगाना।

C Language
void insertionSort(int a[], int n) {
    for (int i = 1; i < n; i++) {
        int key = a[i], j = i - 1;
        while (j >= 0 && a[j] > key) {   // bade ko daayein shift karein
            a[j + 1] = a[j];
            j--;
        }
        a[j + 1] = key;                 // key ko jagah par rakhein
    }
}
💡 लगभग-sorted data के लिए बढ़िया

अगर array पहले से लगभग क्रम में है, insertion sort मुश्किल से कुछ हिलाता है और बहुत तेज़ खत्म होता है।

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

AlgorithmविचारWorst caseकिसके लिए
Bubbleपड़ोसियों को बार-बार swapO(n²)concept सीखना
Selectionहर दौर सबसे छोटा चुननाO(n²)सबसे कम swaps
InsertionSorted हिस्से में डालनाO(n²)लगभग-sorted data

तीनों O(n²) हैं, छोटे arrays के लिए ठीक। बड़े data के लिए quicksort जैसे तेज़ O(n log n) तरीके इस्तेमाल होते हैं। Sorted array में item ढूँढने को इन्हें binary search से जोड़ें।

आम गलतियाँ

  • बहुत आगे loop करके array के पार पढ़ना (n - 1 सीमाओं का ध्यान रखें)।
  • बिना temporary variable के swap करना, एक value खो देना।
  • Insertion sort में while loop के बाद key रखना भूलना।
  • < बनाम > गलत तरीके से तुलना करना, गलत दिशा में sort।
🏋️ अभ्यास

हर algorithm के अंदर एक line जोड़ें जो हर pass के बाद array print करे, और {5, 2, 4, 1, 3} को तीनों से sort करें। हर pass देखना उनके बीच अंतर साफ़ कर देता है।

सारांश

  • Sorting array को क्रम में लगाता है; C में आपके लिए स्वतः sort नहीं।
  • Bubble sort पड़ोसियों को तब तक swap करता है जब तक कोई swap न बचे।
  • Selection sort बार-बार सबसे छोटा बचा element रखता है।
  • Insertion sort हर element को sorted हिस्से में सरकाता है; लगभग-sorted पर बढ़िया।
  • तीनों O(n²) हैं — छोटे arrays के लिए अच्छे; बड़े data के लिए O(n log n) तरीके इस्तेमाल करें।

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

C में sorting क्या है?
Sorting का मतलब array के elements को क्रम में लगाना है, आमतौर पर बढ़ते हुए (छोटे से बड़े)। C अपने आप sort नहीं करता, तो आप bubble, selection या insertion sort जैसा algorithm लिखते हैं — या built-in qsort इस्तेमाल करते हैं — array को जगह पर पुनर्व्यवस्थित करने को।
Bubble sort क्या है और कैसे काम करता है?
Bubble sort बार-बार array में चलकर हर पड़ोसी जोड़े की तुलना करता है और गलत क्रम में होने पर उन्हें swap करता है। हर पूरे pass के बाद सबसे बड़ी बची value अंत में "bubble" हो जाती है। यह तब तक pass करता है जब तक कोई swap न चाहिए, यानी array sorted है।
Beginners के लिए कौन-सा sorting algorithm सबसे अच्छा है?
Bubble, selection और insertion sort classic beginner algorithms हैं क्योंकि वे छोटे और हाथ से trace करने में आसान हैं। Insertion sort अक्सर छोटे arrays के लिए तीनों में सबसे व्यावहारिक है, जबकि bubble sort पहले समझने को सबसे सरल है।
Bubble, selection और insertion sort की time complexity क्या है?
तीनों की worst-case time complexity O(n²) है, यानी काम elements की संख्या के वर्ग के साथ बढ़ता है। ये छोटे arrays के लिए ठीक हैं पर बड़े के लिए धीमे, जहाँ quicksort या mergesort जैसे तेज़ O(n log n) तरीके पसंद किए जाते हैं।
Selection और insertion sort में क्या अंतर है?
Selection sort बार-बार सबसे छोटा बचा element ढूँढकर उसे अगले स्थान पर रखता है, तो यह कम swaps करता है पर हमेशा बाकी scan करता है। Insertion sort हर element को लेकर पहले से sorted हिस्से में उसकी सही जगह पर सरका देता है, जो data लगभग sorted होने पर कुशल है।
← Back to C Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।