Pseudo Code
Coddy의 기수 정렬 - DSA 시리즈 코스 레슨 — 9개 중 4번째.
countingSortByDigit(array, exp):
n = length(array)
output = array of size n
count = array of 10 zeros
for each x in array: # 각 자릿수의 개수를 셉니다
count[(x / exp) % 10] += 1
for d from 1 to 9: # 누적 합계 -> 위치 계산
count[d] += count[d - 1]
for k from n-1 down to 0: # 뒤에서부터 배치 (안정 정렬 유지)
d = (array[k] / exp) % 10
count[d] -= 1
output[count[d]] = array[k]
return output
radixSort(array):
max = largest value in array
exp = 1
while max / exp > 0:
array = countingSortByDigit(array, exp)
exp = exp * 10- exp는 자릿값입니다: 1은 일의 자리, 10은 십의 자리, 100은 백의 자리를 의미합니다.
(x / exp) % 10은 해당 자릿수의 숫자를 추출합니다. - countingSortByDigit은 단일 자릿수에 대한 안정 정렬(stable sort)입니다: 각 숫자가 몇 번 나타나는지 세고, 그 횟수를 위치 정보로 변환한 다음, 순서를 유지하기 위해 요소를 뒤에서부터 앞으로 배치합니다.
- radixSort는 각 자릿수마다 이 과정을 한 번씩 실행하며,
exp가 가장 큰 수의 자릿수를 넘어서면 중단합니다.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기수 정렬 - DSA 시리즈의 모든 레슨
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)