문제
기수정렬이란?
기수정렬은 정수를 자리수를 기준으로 정렬하는 알고리즘이다. 각 자리수를 기준으로 낮은 자리수부터 높은 자리수로 차례차례 정렬하여 최종적으로 정렬된 결과를 얻는다.
기수정렬은 계수정렬(Counting Sort)이나 버킷정렬(Bucket Sort)과 같은 다른 안정적인 정렬 알고리즘을 사용하여 각 자리수를 정렬한다.
기수정렬은 두 가지 방식으로 나뉜다:
LSD(Lowest Significant Digit) 방식: 가장 낮은 자리수부터 정렬하는 방식
MSD(Most Significant Digit) 방식: 가장 높은 자리수부터 정렬하는 방식
해당 글에서는 일반적으로 사용되는 LSD 방식을 설명하겠다.
원리
LSD 방식의 기수정렬은 다음과 같은 단계로 이루어진다:
배열의 가장 낮은 자리수부터 시작하여 각 자리수에 대해 정렬을 수행한다.
정렬이 완료되면 다음 자리수로 이동하여 동일한 정렬을 수행한다.
모든 자리수에 대해 정렬을 마치면 배열이 정렬된다.
예를 들어, 배열 [170, 45, 75, 90, 802, 24, 2, 66]를 십진수 기준으로 기수정렬로 정렬하는 과정은 다음과 같다:
일의 자리수 기준 정렬:
[170, 90, 802, 2, 24, 45, 75, 66]
십의 자리수 기준 정렬:
[802, 2, 24, 45, 66, 170, 75, 90]
백의 자리수 기준 정렬:
[2, 24, 45, 66, 75, 90, 170, 802]
위에서 설명은
문제
입력
첫 줄에 정수
두 번째 줄에
출력
여러 줄에 걸쳐 정렬이 이루어질 때마다 수열
예제
8 3
170 45 75 90 802 24 2 666
24 170 90 802 2 666 75 45
2 75 24 90 666 802 170 45
2 24 45 75 90 666 170 802
2 24 45 75 90 170 666 802
괄호 안의 값들은 수열
170(252), 45(55), 75(113), 90(132), 802(1442), 24(30), 2(2), 666(1232)
24(30), 170(252), 90(132), 802(1442), 2(2), 666(1232), 75(113), 45(55)
2(2), 75(113), 24(30), 90(132), 666(1232), 802(1442), 170(252), 45(55)
2(2), 24(30), 45(55), 75(113), 90(132), 666(1232), 170(252), 802(1442)
2(2), 24(30), 45(55), 75(113), 90(132), 170(252), 666(1232), 802(1442)