From 1511ad68308fc45cdf2a976ca4870119ac0c612b Mon Sep 17 00:00:00 2001 From: Abhishek Date: Mon, 28 Oct 2019 01:49:30 +0530 Subject: [PATCH] Added Radix Sort --- Sorting Algorithms/Java/RadixSort.java | 78 ++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Sorting Algorithms/Java/RadixSort.java diff --git a/Sorting Algorithms/Java/RadixSort.java b/Sorting Algorithms/Java/RadixSort.java new file mode 100644 index 0000000..b40d5d7 --- /dev/null +++ b/Sorting Algorithms/Java/RadixSort.java @@ -0,0 +1,78 @@ +/ Radix sort Java implementation +import java.io.*; +import java.util.*; + +public class RadixSort { + + // A utility function to get maximum value in arr[] + static 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; + } + + // A function to do counting sort of arr[] according to + // the digit represented by exp. + static void countSort(int arr[], int n, int exp) + { + int output[] = new int[n]; // output array + int i; + int count[] = new int[10]; + Arrays.fill(count,0); + + // Store count of occurrences in count[] + for (i = 0; i < n; i++) + count[ (arr[i]/exp)%10 ]++; + + // Change count[i] so that count[i] now contains + // actual position of this digit in output[] + for (i = 1; i < 10; i++) + count[i] += count[i - 1]; + + // Build the output array + for (i = n - 1; i >= 0; i--) + { + output[count[ (arr[i]/exp)%10 ] - 1] = arr[i]; + count[ (arr[i]/exp)%10 ]--; + } + + // Copy the output array to arr[], so that arr[] now + // contains sorted numbers according to curent digit + for (i = 0; i < n; i++) + arr[i] = output[i]; + } + + // The main function to that sorts arr[] of size n using + // Radix Sort + static void radixsort(int arr[], int n) + { + // Find the maximum number to know number of digits + int m = getMax(arr, n); + + // Do counting sort for every digit. Note that instead + // of passing digit number, exp is passed. exp is 10^i + // where i is current digit number + for (int exp = 1; m/exp > 0; exp *= 10) + countSort(arr, n, exp); + } + + // A utility function to print an array + static void print(int arr[], int n) + { + for (int i=0; i