先找十个桶:0~9
第一轮按照元素的个位数排序
第二轮按照元素的十位数排序
第三轮按照元素的百位数排序
…
依次类推
按照从左向右,从上到下的顺序依次取出元素,组成新的数组。
def radix_sort(li):
max_num = max(li)
it = 0
while 10 ** it <= max_num:
buckets = [[] for _ in range(10)]
for var in li:
#987//1%10=7 ; 987//10%10=8 ; 987//100%10=9
digit = (var // 10 ** it) % 10
buckets[digit].append(var)
# 上述分桶完成
li.clear()
for buc in buckets:
li.extend(buc) # 把数重新写回 li
it +=1
import random
li = list(range(1000))
random.shuffle(li)
radix_sort(li)
print(li)



