基数排序: 数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。
时间复杂度 O(n*k)
空间复杂度 O(n+m)
def radix_sort(data_list):
max_num = max(data_list) # 最大值 9->1,99->2,888->3
print(max_num)
it = 0
while 10 ** it <= max_num:
buckets = [[] for _ in range(10)]
for var in data_list:
digit = (var // 10 ** it) % 10
buckets[digit].append(var)
# 分桶完毕
data_list.clear()
for buc in buckets:
# 重新写入
data_list.extend(buc)
it += 1
import random
li = list(range(1000))
random.shuffle(li)
radix_sort(li)
print(li)