[알고리즘] Java로 배우는 카운팅 정렬 - feat.백준(수 정렬하기3)
·
알고리즘
이 문제는 주어진 N개의 수를 오름차순으로 정렬해야 한다. 수의 개수(N)가 최대 10,000,000이지만, 주어진 값이 10,000 이하의 자연수로 한정적이라는 점에서 카운팅 정렬(Counting Sort)을 사용할 수 있다. 카운팅 정렬은 정수 데이터의 범위가 제한되어 있을 때 매우 효율적인 알고리즘이다.카운팅 정렬의 시간 복잡도는 O(N+K)이며 K는 값의 범위이다. 따라서 입력 크기가 크더라도 효율적으로 정리할 수 있다. N = 10입력: 5, 2, 3, 1, 4, 2 ,3 ,5, 1, 7 카운트 배열 생성데이터의 범위가 1~10,000이므로 크기가 10,0001인 카운트 배열을 생성한다. 입력된 값의 등장 횟수를 카운트 배열에 저장한다. 카운팅 정렬에서는 값의 크기를 인덱스로 사용한다. 예를 ..