Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में सॉर्टिंग तकनीकें (Sorting Techniques)


सॉर्टिंग क्या है?

सॉर्टिंग (Sorting) डेटा को किसी विशेष क्रम (आरोही/अवरोही) में व्यवस्थित करने की प्रक्रिया है। C भाषा में कई सॉर्टिंग एल्गोरिदम लागू किए जा सकते हैं।

पांच प्रमुख सॉर्टिंग तकनीकें

  1. बबल सॉर्ट (Bubble Sort) - एक्सचेंज सॉर्ट भी कहलाता है
  2. सिलेक्शन सॉर्ट (Selection Sort)
  3. इन्सर्शन सॉर्ट (Insertion Sort) - रैखिक सॉर्ट भी कहलाता है
  4. क्विक सॉर्ट (Quick Sort) - पार्टीशन एक्सचेंज सॉर्ट
  5. मर्ज सॉर्ट (Merge Sort) - एक्सटर्नल सॉर्ट

बबल सॉर्ट (Bubble Sort) - विस्तृत व्याख्या

सबसे सरल सॉर्टिंग एल्गोरिदम। आसन्न (adjacent) तत्वों की तुलना करके उन्हें क्रम में रखता है।

कार्यविधि

  1. पहले तत्व की तुलना बाकी सभी से करें, आवश्यकता होने पर अदला-बदली (swap) करें।
  2. यही प्रक्रिया दूसरे, तीसरे... तत्व के लिए दोहराएं।
  3. प्रत्येक पास (pass) के बाद सबसे बड़ा तत्व अंत में पहुँच जाता है।

उदाहरण: सरणी [30, 50, 40, 10, 20]

पहला पास:  [10, 50, 40, 30, 20]  (30 और 10 की अदला-बदली)
दूसरा पास: [10, 20, 50, 40, 30]  (50, 40, 30, 20 में अदला-बदली)
तीसरा पास: [10, 20, 30, 50, 40]  (50, 40 की अदला-बदली)
चौथा पास:  [10, 20, 30, 40, 50]  (50, 40 की अदला-बदली)

बबल सॉर्ट का C प्रोग्राम

#include <stdio.h>

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                // अदला-बदली
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

void printArray(int arr[], int n) {
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

int main() {
    int n;
    printf("तत्वों की संख्या: ");
    scanf("%d", &n);
    
    int arr[n];
    printf("%d तत्व दर्ज करें:\n", n);
    for (int i = 0; i < n; i++)
        scanf("%d", &arr[i]);
    
    printf("सॉर्टिंग से पहले: ");
    printArray(arr, n);
    
    bubbleSort(arr, n);
    
    printf("सॉर्टिंग के बाद: ");
    printArray(arr, n);
    
    return 0;
}

सॉर्टिंग एल्गोरिदम की तुलना

एल्गोरिदमसर्वश्रेष्ठऔसतसबसे खराबस्थानस्थिर
बबल सॉर्टO(n)O(n²)O(n²)O(1)हाँ
सिलेक्शन सॉर्टO(n²)O(n²)O(n²)O(1)नहीं
इन्सर्शन सॉर्टO(n)O(n²)O(n²)O(1)हाँ
क्विक सॉर्टO(n log n)O(n log n)O(n²)O(log n)नहीं
मर्ज सॉर्टO(n log n)O(n log n)O(n log n)O(n)हाँ

कब कौन सा उपयोग करें?

  • बबल/इन्सर्शन सॉर्ट: छोटी सरणी, लगभग क्रमबद्ध डेटा, सरलता आवश्यक हो।
  • क्विक सॉर्ट: सामान्य उद्देश्य, मेमोरी सीमित हो, औसत मामले में तेज।
  • मर्ज सॉर्ट: स्थिर सॉर्ट चाहिए, लिंक्ड लिस्ट, बाहरी सॉर्टिंग, गारंटीकृत O(n log n)।
  1. C भाषा में सॉर्टिंग तकनीकें (Sorting Techniques) C भाषा में सॉर्टिंग तकनीकें (Sorting Techniques)

    सॉर्टिंग क्या है? सॉर्टिंग (Sorting) डेटा को किसी विशेष क्रम (आरोही/अवरोही) में व्यवस्थित करने की प्रक्रिया है। C भाषा में कई सॉर्टिंग एल्गोरिदम लागू किए जा सकते हैं। पांच प्रमुख सॉर्टिंग तकनीकें बबल सॉर्ट (Bubble Sort) - एक्सचेंज सॉर्ट भी कहलाता है सिलेक्शन सॉर्ट (Selection Sort) इन्सर्शन सॉर्ट

  1. C भाषा में यूनियन टू पॉइंटर (Union to Pointer) C भाषा में यूनियन टू पॉइंटर (Union to Pointer)

    यूनियन (Union) क्या है? यूनियन एक यूजर-डिफाइंड डेटा प्रकार है जो एक ही मेमोरी स्थान को विभिन्न डेटा प्रकारों के सदस्यों के लिए साझा करने की अनुमति देता है। किसी भी समय केवल एक सदस्य ही मान रख सकता है। यूनियन की घोषणा union यूनियन_नाम { डेटा_प्रकार सदस्य1; डेटा_प्रकार सदस्य2; // ... };

  1. C भाषा में पॉइंटर एक्सेस करने की अवधारणा C भाषा में पॉइंटर एक्सेस करने की अवधारणा

    पॉइंटर घोषणा, प्रारंभिकरण और एक्सेस 1. सामान्य चर int qty = 179; // मेमोरी में: पता 1000 पर मान 179 संग्रहीत 2. पॉइंटर घोषणा int *p; // p एक पॉइंटर चर है जो int का पता रख सकता है 3. पॉइंटर प्रारंभिकरण int qty = 175; int *p; p = &qty; // एड्रेस-ऑफ ऑपरेटर (&) से पता प्राप्त करें मेमोरी आर