From a2eafec301b08213f33fbc0997c100c2e6b705d7 Mon Sep 17 00:00:00 2001 From: Tanuj Rohilla <33057694+TanujRohilla@users.noreply.github.com> Date: Tue, 2 Oct 2018 18:13:01 +0530 Subject: [PATCH] Adding Radix Sort --- Sorting/Radix Sort/RadixSort.cpp | 73 ++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 Sorting/Radix Sort/RadixSort.cpp diff --git a/Sorting/Radix Sort/RadixSort.cpp b/Sorting/Radix Sort/RadixSort.cpp new file mode 100644 index 000000000..56e16c696 --- /dev/null +++ b/Sorting/Radix Sort/RadixSort.cpp @@ -0,0 +1,73 @@ +#include + +using namespace std; + +// Get maximum value from array. +int getMax(int arr[], int n) +{ + int max = arr[0]; + for (int i = 1; i < n; i++) + if (arr[i] > max) + max = arr[i]; + return max; +} + +// Count sort of arr[]. +void countSort(int arr[], int n, int exp) +{ + // Count[i] array will be counting the number of array values having that 'i' digit at their (exp)th place. + int output[n], i, count[10] = {0}; + + // Count the number of times each digit occurred at (exp)th place in every input. + for (i = 0; i < n; i++) + count[(arr[i] / exp) % 10]++; + + // Calculating their cumulative count. + for (i = 1; i < 10; i++) + count[i] += count[i-1]; + + // Inserting values according to the digit '(arr[i] / exp) % 10' fetched into count[(arr[i] / exp) % 10]. + for (i = n - 1; i >= 0; i--) + { + output[count[(arr[i] / exp) % 10] - 1] = arr[i]; + count[(arr[i] / exp) % 10]--; + } + + // Assigning the result to the arr pointer of main(). + for (i = 0; i < n; i++) + arr[i] = output[i]; +} + +// Sort arr[] of size n using Radix Sort. +void radixsort(int arr[], int n) +{ + int exp, m; + m = getMax(arr, n); + + // Calling countSort() for digit at (exp)th place in every input. + for (exp = 1; m/exp > 0; exp *= 10) + countSort(arr, n, exp); +} + +int main() +{ + int n, i; + cout<<"\nEnter the number of data element to be sorted: "; + cin>>n; + + int arr[n]; + for(i = 0; i < n; i++) + { + cout<<"Enter element "<>arr[i]; + } + + radixsort(arr, n); + + // Printing the sorted data. + cout<<"\nSorted Data "; + for (i = 0; i < n; i++) + cout<