반응형

병합 정렬에 설명 및 관련 내용은 아래 링크에 있다.

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,};
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(010 - 1);
    print(1);
    return 0;
}
cs






반응형