您如何使用队列正确地对列表进行基数排序?
我正在使用 Python 3x。
这是我使用队列作为箱的尝试,因为队列是先进先出的数据结构。
from my_queue import Queue
def rsort(n):
'''(list of int) -> list of int
'''
list_length = len(n)
val = 0
mod = 10
k = 1
bin_list = []
alist = n
for bins in range(0,10):
bin_list.append(Queue())
while val == 0:
for num in alist:
sig_dig = num % mod
sig_dig = int(sig_dig / k)
bin_list[sig_dig].enqueue(num)
if bin_list[0].size() == list_length:
alist.append(bin_list[0].dequeue())
else:
mod = mod * 10
k = k * 10
new_list = []
for bins in bin_list:
if not bins.is_empty():
new_list.append(bins.dequeue())
alist = new_list
return alist
我的代码可以很好地处理小数字,例如:[3,2,6,5,8,7]
但是当列表中的值变大时,例如:[240, 28, 5, 18, 140, 2]
我的程序不再对列表进行排序,数字最终丢失且无序。
我一直在玩我的程序,但我无法修复它:(