계수 정렬
- Algorithm/Concept
- 2022. 3. 7.
반응형
728x90
반응형
계수 정렬
데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을대 사용 가능하고, 이 경우에 매우 빠르게 동작한다.
동작 예시
0) 데이터
- List 객체
1) 원소를 모두 순회하여, List 객체의 인덱스에 해당 숫자가 나오면 +1을 해준다.
- 원소 '7'
- 원소 '5'
2) 모든 원소를 순회한 결과
3) 리스트의 원소를 순회하며 개수만큼 출력한다.
예제코드
public class M12_계수정렬 {
public static final int MAX_VALUE = 9;
public static void main(String[] args) {
int n = 15;
// 모든 원소의 값이 0보다 크거나 같다고 가정
int[] arr = {7, 5, 9, 0, 3, 1, 6, 2, 9, 1, 4, 8, 0, 5, 2};
// 모든 범위를 포함하는 배열 선언(모든 값은 0으로 초기화)
int[] cnt = new int[MAX_VALUE + 1];
for (int i = 0; i < n; i++) {
cnt[arr[i]] += 1; // 각 데이터에 해당하는 인덱스의 값 증가
}
for (int i = 0; i <= MAX_VALUE; i++) { // 배열에 기록된 정렬 정보 확인
for (int j = 0; j < cnt[i]; j++) {
System.out.println(i + " "); // 띄어쓰기를 기준으로 등장한 횟수만큼 인덱스 출력
}
}
}
}
반응형
'Algorithm > Concept' 카테고리의 다른 글
퀵 정렬 (0) | 2022.03.07 |
---|---|
삽입정렬 (0) | 2022.03.07 |
선택 정렬 (0) | 2022.03.07 |
다이나믹 프로그래밍 (0) | 2022.03.07 |
이진 탐색 (Binary Search) (0) | 2022.03.07 |