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]