Skip to main content
QUICK REVIEW

[논문 리뷰] Comparison of Bucket Sort and RADIX Sort

Panu Horsmalahti|arXiv (Cornell University)|2012. 06. 15.
Algorithms and Data Compression참고 문헌 6인용 수 8
한 줄 요약

이 논문은 최대 1억 개의 정수를 포함하는 6개의 실제 입력 시나리오를 바탕으로 버킷 정렬과 라이드 정렬을 실험적으로 비교한다. 결과적으로 버킷 정렬은 모든 경우에서 더 빠르지만, 특히 큰 정수 범위에서 메모리 소비가 현저히 높으며, 반면 라이드 정렬은 정렬된 및 비정렬된 입력 모두에서 일관된 성능을 유지하고 대부분의 설정에서 더 적은 메모리를 사용한다.

ABSTRACT

Bucket sort and RADIX sort are two well-known integer sorting algorithms. This paper measures empirically what is the time usage and memory consumption for different kinds of input sequences. The algorithms are compared both from a theoretical standpoint but also on how well they do in six different use cases using randomized sequences of numbers. The measurements provide data on how good they are in different real-life situations. It was found that bucket sort was faster than RADIX sort, but that bucket sort uses more memory in most cases. The sorting algorithms performed faster with smaller integers. The RADIX sort was not quicker with already sorted inputs, but the bucket sort was.

연구 동기 및 목표

  • 이론적 시간 복잡도를 넘어서 실제 환경에서 버킷 정렬과 라이드 정렬의 성능을 평가하기 위해.
  • 다양한 입력 분포를 포함하는 실질적 시나리오에서 어느 알고리즘이 더 효율적인지 파악하기 위해.
  • 다양한 정수 범위와 데이터 패턴에서 시간 사용량과 메모리 소비를 측정하기 위해.
  • 실제로 어떤 조건에서 각 알고리즘이 상대적으로 우수한 성능을 보이는지 파악하기 위해.
  • 입력 특성에 기반하여 최적의 정수 정렬 알고리즘을 선택하기 위한 실험적 데이터 제공하기 위해.

제안 방법

  • 라이드 정렬은 가장 낮은 자릿수(LSD) 방식을 사용하고, 버킷 정렬은 삽입 정렬을 사용하여 C++로 둘 다 구현하였다.
  • 균일한 랜덤, 완전히 정렬된, 거의 정렬된(95% 정렬됨), 소규모 범위, 대규모 범위, 높은 빈도의 반복 값이라는 6종류의 고유한 입력 시퀀스를 생성하였다.
  • Intel i5 프로세서를 탑재한 표준 랩탑에서 GNU/Linux 환경을 사용하여, 입력 크기를 100만 개에서 1억 개로 늘여가며 실행 시간과 메모리 사용량을 측정하였다.
  • 시간 및 메모리 사용량의 증가율을 비교하기 위해 시각화에서 로그 스케일을 사용하였다.
  • 동일한 하드웨어 및 운영 체제 조건에서 알고리즘을 벤치마크하여 공정한 비교를 확보하였다.
  • 확장성과 성능 추세를 평가하기 위해 세 가지 입력 크기(10^6, 10^7, 10^8)에서 데이터를 수집하였다.

실험 결과

연구 질문

  • RQ1버킷 정렬과 라이드 정렬은 다양한 실제 입력 분포에서 실행 시간 측면에서 어떻게 성능을 내는가?
  • RQ2다른 입력 조건에서 버킷 정렬과 라이드 정렬 간의 메모리 소비 트레이드오���은 어떠한가?
  • RQ3이론적으로 예측한 바와 같이, 라이드 정렬은 정렬된 입력과 비정렬된 입력 모두에서 일관된 성능을 유지하는가?
  • RQ4정수의 범위 크기와 데이터 분포는 두 알고리즘의 성능에 어떤 영향을 미치는가?
  • RQ5어떤 입력 조건에서 실질적으로 버킷 정렬이 라이드 정렬을 능가하고, 반대로 어떤 경우에서 라이드 정렬이 더 우수한가?

주요 결과

  • 버킷 정렬은 모든 6개의 테스트 케이스에서 라이드 정렬보다 빠르며, n=10^8일 때 실행 시간은 0.31초에서 97.43초 사이였다.
  • 라이드 정렬은 정렬된 입력과 비정렬된 입력 모두에서 일관된 성능을 보였으며, n=10^7인 테스트 케이스 2와 3에서 각각 1.88초와 1.86초의 실행 시간을 기록하였다.
  • 대부분의 경우에서 버킷 정렬은 라이드 정렬보다 훨씬 많은 메모리를 사용했으며, 테스트 케이스 5에서는 최대 2344MB의 메모리 사용량을 기록했고, 라이드 정렬은 39MB에 그쳤다.
  • 소규모 정수 범위(테스트 케이스 4)에서는 두 알고리즘이 잘 작동했지만, 라이드 정렬이 더 빠르게(10^6일 때 1.05초 대비 0.31초) 작동했으며, 범위가 작아질수록 버킷 정렬의 성능 향상이 두드러졌다.
  • 대규모 정수 범위(테스트 케이스 5, M=10^8)에서는 두 알고리즘이 모두 느려졌지만, 특히 라이드 정렬은 자릿수(d)의 증가로 인해 영향을 많이 받았으며, n=10^8일 때 실행 시간이 246.28초에 이르렀다.
  • 고빈도 반복 값 입력 케이스(테스트 케이스 6)에서는 두 알고리즘이 균일한 랜덤 분포 케이스와 유사하게 작동하여 반복 값에 대한 강건성을 보였다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.