Python Program to Implement Radix Sorting

01. Example:

def radixSorting(data, base=10):
    if data == []:
        return
 
    def keyFactory(digit, base):
        def key(data, index):
            return ((data[index]//(base**digit)) % base)
        return key
    largest = max(data)
    exp = 0
    while base**exp <= largest:
        data = countingSorting(data, base - 1, keyFactory(exp, base))
        exp = exp + 1
    return data
 
def countingSorting(data, largest, key):
    c = [0]*(largest + 1)
    for i in range(len(data)):
        c[key(data, i)] = c[key(data, i)] + 1
 
    
    c[0] = c[0] - 1 
    for i in range(1, largest + 1):
        c[i] = c[i] + c[i - 1]
 
    result = [None]*len(data)
    for i in range(len(data) - 1, -1, -1):
        result[c[key(data, i)]] = data[i]
        c[key(data, i)] = c[key(data, i)] - 1
 
    return result

 
list01 = input('Enter the list of (Non-negative) numbers: ').split()
list01 = [int(x) for x in list01]

sortedList = radixSorting(list01)

print('nSorted list: ', end='')
print(sortedList)

Output:

Enter the list of (Non-negative) numbers: 320 420 140 500 185 60 200 80 10 100
Sorted list: [10, 60, 80, 100, 140, 185, 200, 320, 420, 500]

 

Leave a comment