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

मूलांक सॉर्ट


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

रेडिक्स सॉर्ट तकनीक की जटिलता

  • समय जटिलता:O(nk)
  • अंतरिक्ष जटिलता:O(n+k)

इनपुट और आउटपुट

Input:
The unsorted list: 802 630 20 745 52 300 612 932 78 187
Output:
Data before Sorting: 802 630 20 745 52 300 612 932 78 187
Data after Sorting: 20 52 78 187 300 612 630 745 802 932

एल्गोरिदम

radixSort(array, size, maxDigit)

इनपुट - डेटा की एक सरणी, और सरणी में कुल संख्या, अधिकतम संख्या की अंकों की संख्या

आउटपुट - क्रमबद्ध सरणी।

Begin
   define 10 lists as pocket
   for i := 0 to max -1 do
      m = 10^i+1
      p := 10^i
      for j := 0 to n-1 do
         temp := array[j] mod m
         index := temp / p
         pocket[index].append(array[j])
      done

      count := 0
      for j := 0 to radix do
         while pocket[j] is not empty
            array[count] := get first node of pocket[j] and delete it
            count := count +1
      done
   done
End

उदाहरण

#include<iostream>
#include<list>
#include<cmath>
using namespace std;

void display(int *array, int size) {
   for(int i = 0; i<size; i++)
      cout << array[i] << " ";
   cout << endl;
}

void radixSort(int *arr, int n, int max) {
   int i, j, m, p = 1, index, temp, count = 0;
   list<int> pocket[10]; //radix of decimal number is 10

   for(i = 0; i< max; i++) {
      m = pow(10, i+1);
      p = pow(10, i);

      for(j = 0; j<n; j++) {
         temp = arr[j]%m;
         index = temp/p;   //find index for pocket array
         pocket[index].push_back(arr[j]);
      }

      count = 0;
      for(j = 0; j<10; j++) {
         //delete from linked lists and store to array
         while(!pocket[j].empty()) {
            arr[count] = *(pocket[j].begin());
            pocket[j].erase(pocket[j].begin());
            count++;
         }
      }
   }
}

int main() {
   int n, max;
   cout << "Enter the number of elements: ";
   cin >> n;
   cout << "Enter the maximum digit of elements: ";
   cin >> max;
   int arr[n]; //create an array with given number of elements
   cout << "Enter elements:" << endl;

   for(int i = 0; i<n; i++) {
      cin >> arr[i];
   }

   cout << "Data before Sorting: ";
   display(arr, n);
   radixSort(arr, n, max);
   cout << "Data after Sorting: ";
   display(arr, n);
}

आउटपुट

Enter the number of elements: 10
Enter the maximum digit of elements: 3
Enter elements:
802 630 20 745 52 300 612 932 78 187
Data before Sorting: 802 630 20 745 52 300 612 932 78 187
Data after Sorting: 20 52 78 187 300 612 630 745 802 932

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

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

  1. सी # में ढेर क्रमबद्ध करें

    हीप सॉर्ट एक सॉर्टिंग एल्गोरिथम है जो हीप डेटा संरचना का उपयोग करता है। हर बार हीप का मूल तत्व यानी सबसे बड़ा तत्व हटा दिया जाता है और एक सरणी में संग्रहीत किया जाता है। इसे सबसे दाहिने पत्ते के तत्व से बदल दिया जाता है और फिर ढेर को फिर से स्थापित किया जाता है। यह तब तक किया जाता है जब तक कि ढेर मे

  1. सी # में KeyValuePairs सॉर्ट करें

    KeyValuePairs संग्रह को सॉर्ट करने के लिए सॉर्ट विधि का उपयोग करें। सबसे पहले, संग्रह सेट करें - var myList = new List<KeyValuePair<int, int>>(); // adding elements myList.Add(new KeyValuePair<int, int>(1, 20)); myList.Add(new KeyValuePair<int, int>(2, 15)); myList.Add(new