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
 
void Merge(int* arr, int start, int endint* temp) {
    
    int first = start;
    int mid = (start + end/ 2;
    int second = mid + 1;
 
    for (int i = start; i <= end; i++) {
        if(first <= mid && (second > end || arr[first] < arr[second])) {
            temp[i] = first;
            first++;
        }
        else {
            temp[i] = second;
            second++;
        }
    }
    
    for (int i = start; i <= end; i++)
        arr[i] = temp[i];
}
void MergeSort(int* arr, int start, int endint* temp) {
    if (start >= endreturn;
 
    int mid = (start + end/ 2;
 
    MergeSort(arr, start, mid, temp);
    MergeSort(arr, mid + 1end, temp);
 
    Merge(arr, start, end, temp);
 
    
}
 
cs


'알고리즘' 카테고리의 다른 글

InsertSort  (0) 2018.05.26
SelectionSort  (0) 2018.05.26
BubbleSort  (0) 2018.05.26
Quick Sort  (0) 2018.05.26
Heap Sorting  (0) 2018.05.26

+ Recent posts