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

C प्रोग्राम फॉर रेडिक्स सॉर्ट (Radix Sort)


एक सॉर्टिंग एल्गोरिदम एक ऐसा एल्गोरिदम है जो एक सूची के घटकों को एक निश्चित क्रम में रखता है। सबसे अधिक उपयोग किए जाने वाले क्रम संख्यात्मक क्रम और लेक्सिकोग्राफिक क्रम हैं।

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

यह तत्वों को शुरुआत में समान स्थान मूल्य के व्यक्तिगत अंकों को समूहित करके सॉर्ट करता है। रेडिक्स सॉर्ट का विचार सबसे कम महत्वपूर्ण अंक (LSD) से सबसे महत्वपूर्ण अंक (MSD) तक अंक दर अंक सॉर्ट करना है, उनके बढ़ते/घटते क्रम के अनुसार। रेडिक्स सॉर्ट एक छोटी विधि है जिसका उपयोग कई बार किया जाता है जब नामों की एक बड़ी सूची को वर्णमाला क्रम में लगाया जाता है। विशेष रूप से, नामों की सूची को शुरू में प्रत्येक नाम के पहले अक्षर के अनुसार सॉर्ट किया जाता है, यानी नामों को छब्बीस श्रेणियों में व्यवस्थित किया जाता है।

आइए रेडिक्स सॉर्ट एल्गोरिदम के कामकाज को स्पष्ट रूप से समझने के लिए निम्नलिखित चित्रण की समीक्षा करें। स्पष्ट रूप से, पास/इटरेशन की संख्या उच्चतम व्यक्तिगत संख्या के आकार पर निर्भर करती है।

C प्रोग्राम फॉर रेडिक्स सॉर्ट (Radix Sort)

उपरोक्त उदाहरण में, प्राथमिक कॉलम इनपुट है। शेष कॉलम उत्तरोत्तर महत्वपूर्ण अंक स्थिति पर क्रमिक सॉर्ट के बाद सूची दिखाते हैं।

रेडिक्स सॉर्ट की जटिलता विश्लेषण O(m.n)।

हालांकि, यदि हम इन 2 मानों को देखते हैं, तो कुंजियों का आकार कुंजियों की संख्या की तुलना में अपेक्षाकृत छोटा है। उदाहरण के लिए, यदि हमारे पास छह अंकों की कुंजियाँ हैं, तो हमारे पास 1,000,000 पूरी तरह से अलग रिकॉर्ड हो सकते हैं।

यहां, हम देखते हैं कि कुंजियों का आकार महत्वपूर्ण नहीं है, और यह एल्गोरिदम रैखिक गुणवत्ता O(n) का है।

एल्गोरिदम

Radix_sort (list, n)
shift = 1
for loop = 1 to keysize do
    for entry = 1 to n do
        bucketnumber = (list[entry].key / shift) mod 10
        append (bucket[bucketnumber], list[entry])
    list = combinebuckets()
    shift = shift * 10

उदाहरण

यह रेडिक्स सॉर्ट को लागू करने के लिए एक C प्रोग्राम है।

#include <stdio.h>

int get_max(int a[], int n) {
    int max = a[0];
    for (int i = 1; i < n; i++)
        if (a[i] > max)
            max = a[i];
    return max;
}

void radix_sort(int a[], int n) {
    int bucket[10][10], bucket_cnt[10];
    int i, j, k, r, NOP = 0, divisor = 1, lar, pass;
    lar = get_max(a, n);
    while (lar > 0) {
        NOP++;
        lar /= 10;
    }
    for (pass = 0; pass < NOP; pass++) {
        for (i = 0; i < 10; i++) {
            bucket_cnt[i] = 0;
        }
        for (i = 0; i < n; i++) {
            r = (a[i] / divisor) % 10;
            bucket[r][bucket_cnt[r]] = a[i];
            bucket_cnt[r] += 1;
        }
        i = 0;
        for (k = 0; k < 10; k++) {
            for (j = 0; j < bucket_cnt[k]; j++) {
                a[i] = bucket[k][j];
                i++;
            }
        }
        divisor *= 10;
        printf("After pass %d : ", pass + 1);
        for (i = 0; i < n; i++)
            printf("%d ", a[i]);
        printf("\n");
    }
}

int main() {
    int i, n, a[10];
    printf("सॉर्ट की जाने वाली वस्तुओं की संख्या दर्ज करें: ");
    scanf("%d", &n);
    printf("वस्तुएं दर्ज करें: ");
    for (i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    radix_sort(a, n);
    printf("सॉर्ट की गई वस्तुएं: ");
    for (i = 0; i < n; i++)
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}

आउटपुट

Enter number of items to be sorted
6
Enter items: 567 789 121 212 563 562
After pass 1 : 121 212 562 563 567 789
After pass 2 : 212 121 562 563 567 789
After pass 3 : 121 212 562 563 567 789
Sorted items : 121 212 562 563 567 789
  1. पायथन प्रोग्राम: हीप सॉर्ट पायथन प्रोग्राम: हीप सॉर्ट

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक सरणी दी गई है, हमें हीपसॉर्ट की अवधारणा का उपयोग करके इसे क्रमबद्ध करना है। यहां हम अधिकतम तत्व को अंत में रखते हैं। यह तब तक दोहराया जाता है जब तक सरणी क्रमबद्ध नहीं हो जाती। उदाहरण # हीपिफाई def heapify(arr, n, i): la

  1. पायथन प्रोग्राम: कॉकटेल सॉर्ट पायथन प्रोग्राम: कॉकटेल सॉर्ट

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

  1. पायथन प्रोग्राम: सिलेक्शन सॉर्ट एल्गोरिदम पायथन प्रोग्राम: सिलेक्शन सॉर्ट एल्गोरिदम

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में सिलेक्शन सॉर्ट और इसके कार्यान्वयन के बारे में जानेंगे।सिलेक्शन सॉर्ट एल्गोरिदम में, एक सरणी को अनसॉर्टेड भाग से न्यूनतम तत्व को पुनरावर्ती रूप से ढूंढकर और इसे शुरुआत में डालकर सॉर्ट किया जाता है। दिए गए सरणी पर सिलेक्शन सॉर्ट के निष्पादन के दौरा