반응형
계수 정렬이란?
정렬되어 있지 않은 Array List를 정렬하기 위해 그 값이 몇개 있는지 세는 작업을 하고, 선형 시간에 정렬하는 알고리즘이다.
계수 정렬 알고리즘은 다음과 같다.
1. 정렬 되어 있지 않은 배열을 받아들인다.
2. 각 값마다 몇개가 있는지 새로운 배열에 적는다.
(즉, 아래 2번의 배열은 1이 2개, 2가 3개, 3이 2개, ... ,7이 1개)
3. 2번 배열을 누적합 하여 7번배열까지 더한다.
(0 + 2 = 2, 2 + 3 = 5 , ..., 9 + 1 = 10)
4. 3번 배열을 이용하여 4번 배열에 각 번호에 맞게 값을 하나씩 주고, -1씩 해준다.
이 과정에 대해서는 아래에 계수 정렬 연습 스크립트를 넣어두겠다.
시간복잡도는 O(n)이다.
- n개의 숫자를 정렬하는데 걸리는 시간은 O(n)
- 각 숫자가 나온 횟수를 세는데 O(n)
- 다시 숫자를 정렬된 리스트에 채워넣는데 O(n)
화면이 잘려 보인다면
사이트를 참조하면 된다.
반응형
'Applied > 알고리즘' 카테고리의 다른 글
DFS (Depth First Search) 알고리즘 (0) | 2016.11.09 |
---|---|
이분 매칭 (Bipartite Matching) (0) | 2016.11.02 |
퀵 정렬(Quick Sort) (0) | 2016.10.02 |
다양한 알고리즘 그림으로 볼 수 있는 사이트 (0) | 2016.09.22 |
병합 정렬(Merge Sort) (2) (0) | 2016.09.08 |