思想:采用关键字排序思想,即基于关键字各位的大小进行排序,借助”分配“和“收集”两种操作对逻辑关键字进行排序。 实现:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 如图所示,最左端为输入,其余各列表示了对各个不断递增的有效位连续排序后的情况,阴影部分表述当前正被排序的数位。 代码:
def jishu_sort(array):
times=len(str(max(array)))
for i in range(times):
bukt=[[] for _ in range(10)]
for eachnum in array:
weishu=eachnum//(10**i)%10
bukt[weishu].append(eachnum)
array=[]
for i in range(10):
array+=bukt[i]
print(array)
if __name__ == '__main__':
array=[12,34,767,45,343,676,454,49]
jishu_sort(array)
|