From 1ca08512ac6386e898a87183bf633144a1526fbb Mon Sep 17 00:00:00 2001 From: Dharam105 <72906063+Dharam105@users.noreply.github.com> Date: Sat, 31 Oct 2020 13:52:03 +0530 Subject: [PATCH] Create radix.py --- radix.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 radix.py diff --git a/radix.py b/radix.py new file mode 100644 index 0000000..28624be --- /dev/null +++ b/radix.py @@ -0,0 +1,57 @@ +def countingSort(arr, exp1): + + n = len(arr) + + # The output array elements that will have sorted arr + output = [0] * (n) + + # initialize count array as 0 + count = [0] * (10) + + # Store count of occurrences in count[] + for i in range(0, n): + index = (arr[i] / exp1) + count[int(index % 10)] += 1 + + # Change count[i] so that count[i] now contains actual + # position of this digit in output array + for i in range(1, 10): + count[i] += count[i - 1] + + # Build the output array + i = n - 1 + while i >= 0: + index = (arr[i] / exp1) + output[count[int(index % 10)] - 1] = arr[i] + count[int(index % 10)] -= 1 + i -= 1 + + # Copying the output array to arr[], + # so that arr now contains sorted numbers + i = 0 + for i in range(0, len(arr)): + arr[i] = output[i] + +# Method to do Radix Sort +def radixSort(arr): + + # Find the maximum number to know number of digits + max1 = max(arr) + + # 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 + exp = 1 + while max1 / exp > 0: + countingSort(arr, exp) + exp *= 10 + + +# Driver code +arr = [170, 45, 75, 90, 802, 24, 2, 66] + +# Function Call +radixSort(arr) + +for i in range(len(arr)): + print(arr[i])