입력
: n 개의 r진수의 k자리 숫자출력
: 정렬된 숫자RadixSort(L: list of unsorted items):
largest := max(L)
exponent := floor(log10(largest))
bucket := empty list
index := 0
for i to exponent+1 do:
bucket := empty list
for j to length(L) do:
number := L[j]
digit := i+1
while(digit--) do:
temp := number % 10
number := floor(number-temp/10)
digit := temp
if bucket[digit] exists then
bucket[digit] := bucket[digit]
if bucket[digit] is undefined then
bucket[digit] := empty list
add L[j] to bucket[digit]
reset index to 0
for digit to length(bucket) do:
if bucket[digit] exists then
for j to length(bucket[digit])
L[index++] := bucket[digit][j]
return L
end-function
단, k 또는 r이 n보다 매우 작을 경우
128GB 입력과 1GB의 주기억 장치 대한 ExternalSort의 수행 과정
1GB의 정렬된 블록 128개가 별도의 HDD에 저장된다.
2GB의 정렬된 블록 64개가 출력 HDD에 만들어진다.
4GB의 정렬된 블록 32개가 출력 HDD에 만들어진다.
8GB의 정렬된 블록 16개 출력 HDD에 만들어진다.
⋯
64GB의 정렬된 블록 2개가 출력 HDD에 만들어진다.
128GB의 정렬된 블록 1개가 출력 HDD에 만들어진다.
출력 HDD 리턴