#include <stdio.h>
#include<stdlib.h>
void mergesort(int*,int*,int,int);
void merge(int*,int*,int,int,int);
int main()
{
int N;
int* arr;
int* order;
scanf("%d", &N);
arr = (int*)malloc(sizeof(int)*N);
order = (int*)malloc(sizeof(int)*N);
for(int i=0;i<N;i++)
scanf("%d", &arr[i]);
mergesort(arr, order, 0, N-1);
for(int i=0;i<N;i++)
printf("%d\n", arr[i]);
return 0;
}
void mergesort(int* arr, int* order, int low, int high){
int mid = (low + high) / 2;
if(low<high){
mergesort(arr, order,low, mid);
mergesort(arr, order,mid+1, high);
merge(arr, order,low, mid, high);
}
}
void merge(int* arr, int* order, int low, int mid, int high){
int i=low;
int j = mid+1;
int k = low;
while(i<=mid && j<=high){
if(arr[i]<arr[j])
order[k++] = arr[i++];
else
order[k++] = arr[j++];
}
if(i<=mid)
while(i<=mid){
order[k++] = arr[i++];
}
else if(j<=high)
while(j<=high){
order[k++] = arr[j++];
}
for(i=low;i<=high;i++)
arr[i] = order[i];
}
I'm guessing that quick sort would've been faster...
'프로그래밍 > C' 카테고리의 다른 글
baekjoon 1874 & runtime error: integer overflow (0) | 2022.01.12 |
---|---|
baekjoon 1920 w/ binary search & merge sort (0) | 2022.01.11 |
baekjoon 1654 w/ binary search (0) | 2022.01.10 |
baekjoon 1436 w/ brute force (0) | 2022.01.10 |
baekjoon 1181 w/ mergesort (0) | 2022.01.09 |