#include<stdio.h>
#define MAX_SIZE 1000000
int sortArr[MAX_SIZE];
void marge(int arr[], int left, int mid, int right) {
int l, r, k, a;
l = left;
r = mid + 1;
k = left;
while(l <= mid && r <= right) {
sortArr[k++] = arr[l] <= arr[r] ? arr[l++] : arr[r++];
}
if(l > mid) {
for(a = r; a <= right; a++) {
sortArr[k++] = arr[a];
}
} else {
for(a = l; a <= mid; a++) {
sortArr[k++] = arr[a];
}
}
for(a = left; a <= right; a++) {
arr[a] = sortArr[a];
}
}
void marge_sort(int arr[], int left, int right) {
int mid;
if(left < right) {
mid = (left+right) / 2;
marge_sort(arr, left, mid);
marge_sort(arr, mid+1, right);
marge(arr, left, mid, right);
}
}
int main(int argc, char* argv[]) {
int input;
scanf("%d", &input);
int arr[MAX_SIZE];
for(int i = 0; i < input; i++) {
scanf("%d", &arr[i]);
}
marge_sort(arr, 0, input-1);
for(int i = 0; i < input; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
'백준 알고리즘 > 정렬' 카테고리의 다른 글
[백준 알고리즘] 1181번 단어 정렬 (0) | 2022.03.11 |
---|---|
[백준 알고리즘] 10814번 나이순 정렬 (0) | 2022.03.11 |
[백준 알고리즘] 2750 수 정렬하기 - Python (0) | 2022.03.11 |
[백준 알고리즘] 2750번 수 정렬하기 - C (0) | 2021.11.24 |