문제 11 · 버킷 정렬
문제 11 [3점]
버킷 정렬bucket sort은 원소들이 어떤 특성을 가지고 있어야 잘 동작하는지, 그 이유와 함께 서술하세요.
풀이 및 해설
버킷 정렬의 동작
버킷 정렬bucket sort은 값의 범위를 여러 개의 버킷bucket(구간)으로 나눈 뒤,
- 각 원소를 자기 값에 해당하는 버킷에 넣고,
- 각 버킷 안을 (삽입 정렬 등으로) 정렬한 다음,
- 버킷을 순서대로 이어 붙여 결과를 만듭니다.
잘 동작하기 위한 특성 — 균등 분포
버킷 정렬이 빠르려면 원소들이 값의 범위에 걸쳐 균등 분포uniform distribution되어 있어야 합니다. 그래야 각 버킷에 원소가 골고루 나뉘어 한 버킷에 몰리지 않습니다.
n개의 원소를 대략n개의 버킷에 고르게 분산하면, 버킷 하나에 평균 상수 개가 들어가 각 버킷 정렬은 O(1) 수준이 됩니다.- 따라서 평균 시간 복잡도 O(n) (분산·수집 각 O(n))을 달성합니다.
분포가 편향되면
값이 특정 구간에 몰려 편향되면 원소들이 소수의 버킷에 집중됩니다. 극단적으로 모든 원소가 한 버킷에 들어가면 그 버킷 하나를 정렬하는 데 O(n²)이 되어, 버킷 정렬의 이점이 사라집니다.
정리하면, 버킷 정렬은 입력이 일정 범위에 균등하게 분포할 때 각 버킷에 고르게 흩어져 평균 선형 시간에 동작합니다.