Skip to content

Commit 8623a41

Browse files
authored
Create note.md
1 parent f7d75d0 commit 8623a41

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

계수정렬/note.md

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
```
2+
package algo;
3+
4+
5+
/**
6+
* 이전 정렬 알고리즘은 쵣대 O(n*logn)
7+
* 이보다 더 빠른 정렬알고리즘이 필요하다면?
8+
* O(n)인 계수정렬
9+
* 크기를 기준으로 개수를 세는 알고리즘이다
10+
* 여기서 크기란? 1,2가 있다면 2가 더 크다 / 1의 크기는 1
11+
* ex) 5이하의 자연수를 오름차순으로 정렬해라
12+
* 라고! 하면 크기의 종류와 크기가 정해져있다
13+
* 즉. 5이하니까 1,2,3,4,5라는 5종류가 있을거고 이들의 크기는 1 < 2 < 3 < 4 < 5 순으로 정해져있다
14+
* 속도가 빠른 이유는 바로 이런 조건이 미리 부여되어있기 때문
15+
* 따라서 1,2,3,4,5 각각의 공간을 잡아주고 array의 원소가 n개니까 총 n번만 돌면서 각각의 숫자에 개수를 세고 그대로 나열하면 된다.
16+
*/
17+
18+
public class Main {
19+
static int[] array = {1, 3, 2, 4, 3, 2, 5, 3, 1, 2, 3, 4, 4, 3, 5, 1, 2, 3, 5, 2, 3, 1, 4, 3, 5, 1, 2, 1, 1, 1};
20+
21+
public static void main(String[] args) {
22+
23+
/** 1. 5이하의 자연수를 크기별로 나열해라 -> 5이하 = 1,2,3,4,5*/
24+
// int[] count = new int[5];
25+
// 근데 0부터 시작보다 머리로 따라가기 좋게 1부터 시작하도록
26+
int[] count = new int[6];
27+
28+
for (int i = 1; i <= 5; i++) {
29+
count[i] = 0; // 초기화만 해주고
30+
}
31+
32+
// 갯수를 세주면
33+
for (int i = 0; i < 30; i++) {
34+
count[array[i]]++;
35+
}
36+
37+
for (int i = 1; i <= 5; i++) {
38+
if (count[i] != 0) {
39+
for (int j = 0; j < count[i]; j++) {
40+
System.out.println(i);
41+
}
42+
}
43+
}
44+
45+
}
46+
}
47+
48+
```

0 commit comments

Comments
 (0)