기수 정렬

기수 정렬은 키를 자릿수 또는 일정 길이의 부분 키로 나눠 여러 차례 안정적으로 정렬한다 알고리즘의 자릿수 기반 정렬에 속하며, 데이터의 순서를 정하거나 특정 조건을 만족하는 값을 찾는 문제를 다룬다. 올바른 구현에서는 비교·키 표현과 알고리즘이 유지해야 하는 불변식을 먼저 정의한다.

분류알고리즘 · 자릿수 기반 정렬
해결 문제키를 자릿수 또는 일정 길이의 부분 키로 나눠 여러 차례 안정적으로 정렬한다
핵심 동작LSD 방식은 낮은 자리부터 높은 자리로 안정 정렬하고 MSD 방식은 높은 자리부터 그룹을 분할한다
시간 복잡도O(d(n+k))
추가 공간자리 정렬에 따라 상이
주요 전제각 자리 추출이 가능하고 자리별 정렬의 안정성·키 부호 처리를 보장해야 한다
대표 활용고정 길이 정수·문자 키에 유용하며 비교 정렬의 순서 관계 대신 자료 표현을 활용한다
참고 자료MIT 강의 노트

기수 정렬은 키를 자릿수 또는 일정 길이의 부분 키로 나눠 여러 차례 안정적으로 정렬한다 알고리즘의 자릿수 기반 정렬에 속하며, 데이터의 순서를 정하거나 특정 조건을 만족하는 값을 찾는 문제를 다룬다. 올바른 구현에서는 비교·키 표현과 알고리즘이 유지해야 하는 불변식을 먼저 정의한다.[1]

동작 원리는 다음과 같다. LSD 방식은 낮은 자리부터 높은 자리로 안정 정렬하고 MSD 방식은 높은 자리부터 그룹을 분할한다. 문자 문자열과 정수 키에는 서로 다른 기수·종료 규칙이 필요하다. 구현에서 각 단계의 선택이 최종 결과의 올바른 순서·위치를 유지하는지 확인해야 한다. 반복 또는 재귀의 경계와 동일한 키를 가진 원소의 처리 역시 실행 결과에 영향을 준다.

시간·메모리 성질은 길이 d·원소 n·한 자리 범위 k일 때 보통 O(d(n+k)) 적용하려면 각 자리 추출이 가능하고 자리별 정렬의 안정성·키 부호 처리를 보장해야 한다 따라서 계산 복잡도는 원소 수뿐 아니라 입력의 정렬 상태, 키 범위 또는 비교·이동 비용처럼 알고리즘이 가정하는 자료 특성과 함께 분석해야 한다.

고정 길이 정수·문자 키에 유용하며 비교 정렬의 순서 관계 대신 자료 표현을 활용한다. 바이트·문자열 처리 규칙은 구현에 따라 달라진다. 동일한 목적의 다른 알고리즘과 비교할 때에는 안정성, 원소 이동의 양, 캐시 접근 패턴, 전처리 필요성과 최악 입력에서의 시간 비용을 함께 검토한다. 구체적인 계산 모델은 대상 자료구조 및 구현에 따라 달라진다.[2]

역사와 개발 배경

해결 문제와 전제

입력과 출력

비교·키 모델

알고리즘의 원리

기본 아이디어

단계별 처리

불변식

정확성

종료 조건

동일 키와 경계값

복잡도

시간 복잡도

공간 복잡도

입력별 성능

구현

자료 표현

의사 코드

최적화

유사 알고리즘과의 비교

활용 분야

관련 문서

  1. MIT Introduction to Algorithms ↩
  2. NIST DADS ↩