알고리즘(9)
-
[알고리즘] 정렬(3) - 삽입 정렬(Insertion Sort)
원리 1. 0번부터 n번 인덱스의 데이터를 차례대로 선택하자 2. 선택한 인덱스부터 0까지 인접한 인덱스를 비교하자 3. 만약 인덱스가 낮은 원소가 더 크다면 교환하고 아니라면 탈출한다. (오름차순기준) [ 70, 55, 30, 47, 66 ] (70) 55 30 47 66 --> "70" 55 30 47 66 70 (55) 30 47 66 --> "55" 70 30 47 66 55 70 (30) 47 66 --> "30" 55 70 47 66 30 55 70 (47) 66 --> 30 "47" 55 70 66 30 47 55 70 (66) --> 30 47 55 "66" 70 정렬 후 : [ 30 47 55 66 70 ] 구현 for (int i = 0; i < n - 1; ++i) { int fix ..
2020.04.07 -
[알고리즘] 정렬(2) - 선택 정렬(Selection Sort)
원리 1. 정렬되지 않은 중 원소를 가장 작은 원소를 탐색하자 2. 가장 작은 원소를 정렬 되지 않은 원소 맨앞으로 보내자 [ 70, 55, 30, 20, 47 ] | 70, 55, 30, 20, 47 --> 70, 55, 30, (20), 47 (선택) 20, | 70, 55, 30, 47 --> 20, 70, 55, (30), 47 (선택) 20, 30, | 70, 55, 47 --> 20, 30, 70, 55, (47) (선택) 20, 30, 47, | 70, 55 --> 20, 30, 47, 70, (55) (선택) 정렬 후 : [ 20, 30, 47, 55, 70 ] 구현 for (int i = 0; i < n - 1; ++i) { int min_idx = i; for (int j = i + 1..
2020.04.06 -
[알고리즘] 정렬(1) - 버블 정렬 (Bubble Sort)
원리 1. 첫 인덱스부터 인접한 두 원소를 "비교"하자 2. 가장 큰 원소를 "맨뒤"로 보내자 [ 1, 55, 30, 20, 47 ] (1, 55), 30, 20, 47 --> (1, 55), 30, 20, 47 1, (55, 30), 20, 47 --> 1, (30, 55), 20, 47 1, 30, (55, 20), 47 --> 1, 30, (20, 55), 47 1, 30, 20, (55, 47) --> 1, 30, 20, (47, 55) 이 과정을 거쳐서 55이라는 숫자가 맨뒤로 정렬 된 것을 확인할 수 있습니다. 이 과정을 총 n번 반복하면 됩니다. 구현 vector vec = { 55, 7, 78, 12, 42, 3, 2 }; for(int i = 0; i < vec.size(); ++i) f..
2020.04.02