대기열을 사용하여 목록을 올바르게 기수 정렬하려면 어떻게합니까?대기열을 사용하여 기수 정렬 방법?
저는 파이썬 3x를 사용하고 있습니다.
대기열은 선입 선출 데이터 구조이기 때문에 대기열로 쓰는 것은 저의 시도입니다. 목록에서 값이 같은 큰 될 때 [3,2,6,5,8,7]
:하지만
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
내 코드는 작은 숫자와 완벽하게 잘 작동 [240, 28, 5, 18, 140, 2]
, 숫자가 누락 끝 없다 정렬되지 않은.
내 프로그램을 많이 사용 해본하지만 난 그냥 :(해결할 수없는
코드에서 잘못된 것 몇 가지가 있습니다
당신의'Queue' 클래스의 API는 무엇입니까 : 여기
내가 결국, 당신은 할 생각입니까? 구체적으로,'dequeue'는 그것으로부터 하나의 항목 만 제거하거나, 한번에 모든 값을 제거합니까? – Blckknght