-
Notifications
You must be signed in to change notification settings - Fork 4
merge sort
Changi Cho edited this page Jan 8, 2020
·
1 revision
병합정렬
vector<int> arr;
vector<int> temp;
void merge(int start, int mid, int end) {
int p1 = start;
int p2 = mid + 1;
int k = start;
while (p1 <= mid && p2 <= end) {
if (arr[p1] <= arr[p2]) {
temp[k] = arr[p1];
k += 1; p1 += 1;
}
else {
temp[k] = arr[p2];
k += 1; p2 += 1;
}
}
while (p1 <= mid) {
temp[k] = arr[p1];
k += 1; p1 += 1;
}
while (p2 <= end) {
temp[k] = arr[p2];
k += 1; p2 += 1;
}
for (int i = start; i <= end; i++) {
arr[i] = temp[i];
}
}
void merge_sort(int start, int end) {
int mid = (start + end) / 2;
if (start < end) {
merge_sort(start, mid);
merge_sort(mid + 1, end);
merge(start, mid, end);
}
}