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 end, int* 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 end, int* temp) { if (start >= end) return; int mid = (start + end) / 2; MergeSort(arr, start, mid, temp); MergeSort(arr, mid + 1, end, 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 |