Radix or base is the number of unique digits (including zero) used to represent numbers in a positional numeral system. The concept of Radix Sort is to implement digit by digit sorting beginning from least significant to most significant digit. Radix sort uses counting sort as a subroutine to sort.
Input array must have the elements with the same radix and width, data must be between a range of elements, it works on sorting based on individual digit position. Radix is not an in-place algorithm as it uses a temporary count array.

Since radix sort is a non-comparative algorithm, it has advantages over comparative sorting algorithms.

``````
# counting sort
def countingSort(array, place):
size = len(array)
output =  * size
count =  * 10

# Calculate count of elements
for i in range(0, size):
index = array[i] // place
count[index % 10] += 1

# Calculate cumulative count
for i in range(1, 10):
count[i] += count[i - 1]

# Place the elements in sorted order
i = size - 1
while i >= 0:
index = array[i] // place
output[count[index % 10] - 1] = array[i]
count[index % 10] -= 1
i -= 1

for i in range(0, size):
array[i] = output[i]

# radix sort - counting sort as subprocess
# find maximum element
max_element = max(array)

# Apply counting sort to sort elements based on place value.
place = 1
while max_element // place > 0:
countingSort(array, place)
place *= 10

data = [1, 3, 2, 5, 7]