From f952f87bf76611a46c1a5987915f8b99ee86bc07 Mon Sep 17 00:00:00 2001 From: Joisha02 <70835676+Joisha02@users.noreply.github.com> Date: Sat, 8 Oct 2022 13:12:03 +0530 Subject: [PATCH] Add files via upload --- Sorting/radix_sort.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Sorting/radix_sort.cpp diff --git a/Sorting/radix_sort.cpp b/Sorting/radix_sort.cpp new file mode 100644 index 0000000..d23254f --- /dev/null +++ b/Sorting/radix_sort.cpp @@ -0,0 +1,64 @@ + +#include +using namespace std; + +int getMax(int arr[], int n) +{ + int mx = arr[0]; + for (int i = 1; i < n; i++) + if (arr[i] > mx) + mx = arr[i]; + return mx; +} + +void countSort(int arr[], int n, int exp) +{ + int output[n]; + int i, count[10] = { 0 }; + + for (i = 0; i < n; i++) + count[(arr[i] / exp) % 10]++; + + for (i = 1; i < 10; i++) + count[i] += count[i - 1]; + + + for (i = n - 1; i >= 0; i--) { + output[count[(arr[i] / exp) % 10] - 1] = arr[i]; + count[(arr[i] / exp) % 10]--; + } + + + for (i = 0; i < n; i++) + arr[i] = output[i]; +} + +void radixsort(int arr[], int n) +{ + + int m = getMax(arr, n); + for (int exp = 1; m / exp > 0; exp *= 10) + countSort(arr, n, exp); +} + +void print(int arr[], int n) +{ + for (int i = 0; i < n; i++) + cout << arr[i] << " "; +} + +int main() +{ + int n,i; + cout<<"Enter the size of the array"<>n; + int arr[n]; + cout<<"Enter the values"<>arr[i]; + } + radixsort(arr, n); + print(arr, n); + return 0; +} +