基数排序是从低位到高位按某一位来排序
所以需要知道列表中的最大值,以获取它的位数,确定循环的次数
每次循环需要建一个长度为10的列表,元素为空列表,下标对应每个数的某一位
即第一次循环,如果某个数个位为3,则放入下标为3的列表中
第二次循环,按十位进行
每次循环结束,遍历二维列表,将元素依次赋给原列表,即第一次循环结束后,得到了个位有序的列表
第二次循环结束,得到个位和十位有序的列表
a = [9, 78, 54, 91, 86, 53, 88, 66, 46, 15]
"""获取最大的数,并求它的位数"""
max = 0
for i in a:
if i > max:
max = i
num = 0
while max:
num += 1
max = max//10
"""建立二维列表,存放某一位为0,1,,,9的数"""
for i in range(1, num+1):
temp = [[] for j in range(10)]
for item in a:
z = (item % (10**i))//(10**(i-1)) #获得个位,十位,,,的数
temp[z].append(item) #存入对应列表
count = 0
for list in temp: #按顺序赋值给a
for x in list:
a[count] = x
count += 1
print(a)
"""循环num次"""