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

रेडिक्स सॉर्ट के लिए सी प्रोग्राम

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

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

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

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

रेडिक्स सॉर्ट के लिए सी प्रोग्राम

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

रेडिक्स सॉर्ट ओ (एमएन) का जटिलता विश्लेषण।

हालाँकि, यदि हम इन 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 ("Enter the number of items to be sorted: ");
   scanf ("%d", &n);
   printf ("Enter items: ");
   for (i = 0; i < n; i++){
      scanf ("%d", &a[i]);
   }
   radix_sort (a, n);
   printf ("Sorted items : ");
   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. हीप सॉर्ट के लिए पायथन प्रोग्राम

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

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

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

  1. चयन क्रम के लिए पायथन कार्यक्रम

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