반응형
병합 정렬에 설명 및 관련 내용은 아래 링크에 있다.
https://www.crocus.co.kr/search/%EB%B3%91%ED%95%A9%20%EC%A0%95%EB%A0%AC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include <iostream> int arr[10] = { 9,8,7,6,5,4,3,2,1,0 }; int tmp[10]; void mergeSort(int start, int end) { if (start < end) { int mid = (start + end) >> 1; mergeSort(start, mid); mergeSort(mid + 1, end); int left = start, right = mid + 1; int idx = start; while (left <= mid || right <= end) { if (right > end || (left <= mid && arr[left] < arr[right])) tmp[idx++] = arr[left++]; else tmp[idx++] = arr[right++]; } for (int i = start; i <= end; i++) arr[i] = tmp[i]; } } void print(int a) { printf("%s\n", !a ? "전" : "후"); for (int i = 0; i < 10; i++) printf("%d ", arr[i]); printf("\n"); } int main() { print(0); mergeSort(0, 10 - 1); print(1); return 0; } | cs |
반응형
'Applied > 알고리즘' 카테고리의 다른 글
냅색(Knapsack) 알고리즘 예제 (0) | 2019.04.29 |
---|---|
비트연산을 이용한 모든 부분집합 구하기 (0) | 2019.04.03 |
O(n^2) 정렬 알고리즘 (0) | 2018.10.18 |
Map STL에서 연산자 오버로딩 이용 방법 (0) | 2018.10.08 |
strtok를 이용하여 토큰 단위 값 받기 (0) | 2018.10.05 |