기수 정렬 예제 - 1

문제 분석

  • N의 최대 개수가 10,000,000으로 매우 크기 때문에 O(nlogn)보다도 더 빠른 알고리즘이 필요하다.

  • 숫자의 크기가 10,000 이하이기 때문에 기수 정렬과 함께 많이 사용하는 계수 정렬(counting sort)를 사용할 수 있다.

  • 다만, 계수 정렬을 사용할 때에는 제약 조건이 있다.

    • 데이터가 양수여야 한다.

    • 데이터의 값이 매우 작아야 한다.

손으로 풀어보기

  1. 숫자 크기가 10,000 이하 이므로 10,001 크기의 배열을 선언한다. 이후 입력하는 수를 받아 수의 값을 배열의 인덱스로 보고 해당 인덱스에 해당하는 값을 1 증가시켜 준다.

img_1.png
  1. 리스트를 처은부터 끝까지 탐색하면서 값이 0이 아닌 경우 해당 값이 있는 index를 값만큼 반복하여 출력해 준다.

img_2.png

슈도코드

코드 구현 - 파이썬

코드 구현 - 자바

Last updated