def initRadix(radix):
radix.clear()
for i in range(10):
radix.append([])
def moveRadixToArr(radix, arr):
arr.clear()
for i in radix:
for j in i:
arr.append(j)
def radixSort(arr):
maxNum = max(arr)
digits = len(str(maxNum))
# radix = [[]] * 10 // 所有 [] 都指向同一个堆,所以不可用这种方法初始化radix列表
radix = []
initRadix(radix)
offset = 1
for i in range(digits):
for j in arr:
radix[j // offset % 10].append(j)
moveRadixToArr(radix, arr)
initRadix(radix)
offset *= 10
# arr = [3, 44, 38, 5, 47, 15, 36, 32, 0]
# radixSort(arr)
# print(arr)
arr = [3, 44, 38, 5, 47, 15, 36, 32, 0, 109, 2001, 302]
radixSort(arr)
print(arr)
