defradix_sort(array):
max_num =max(array)# 数组中的最大值# place = 1# while max_num > 10*place:# place += 1# place 记录此序列位数if0< max_num <9:
place =1# 1位数elif10< max_num <99:
place =2# 2位数elif101< max_num <999:
place =3# 3位数else:
place =4# 因为现在接触的都是小数字最大的就设置为4位数了for i inrange(place):# i从0开始首先排个位数# buckets: [[],[],[],[],[],[],[],[].[],[]]
buckets =[[]for _ inrange(10)]for num in array:# 循环遍历array里面的元素
radix =int(num/(10**i)%10)# 获取该数的个位数# 例如17就放置在buckets第八个列表中(从0开始计数)
buckets[radix].append(num)# 放置buckets中
j =0# 从零开始计数for k inrange(10):for num in buckets[k]:# 第一次循环排个位数,第二次十位数......
array[j]= num # 将buckets列表排好的数字放置array中
j +=1return array
if __name__ =='__main__':
array =[25,17,33,17,22,13,32,15,9,25,27,18]print(radix_sort(array))