입력 코드
#include <stdio.h>
void merge(int a[], int low, int mid, int hight) {
int b[1000000];
int i = low;
int j = mid + 1;
int k = 0;
while(i <= mid && j <= hight) {
if(a[i] <= a[j])
b[k++] = a[i++];
else
b[k++] = a[j++];
}
while(i <= mid)
b[k++] = a[i++];
while(j <= hight)
b[k++] = a[j++];
k--;
while(k >= 0) {
a[low + k] = b[k];
k--;
}
}
void mergeSort(int a[], int low, int hight) {
int mid;
if(low < hight) {
mid = (low + hight) / 2;
mergeSort(a, low, mid);
mergeSort(a, mid + 1, hight);
merge(a, low, mid, hight);
}
}
int main(void) {
int arr[1000000];
int i, cnt;
scanf("%d", &cnt);
for(i = 0 ; i < cnt; i++)
scanf("%d", &arr[i]);
mergeSort(arr, 0, cnt - 1);
for(i = 0; i < cnt; i++)
printf("%d ", arr[i]);
}
출처 travelerfootprint.tistory.com/82
코드 설명
#정렬
↑↑↑ qsort (퀵 정렬) 알고리즘
↑↑↑ 병합정렬 알고리즘
병합정렬
codevang.tistory.com/58?category=827587
문제 출처
'C' 카테고리의 다른 글
#58. [백준_C언어] 10814 : 나이순 정렬 (0) | 2021.01.30 |
---|---|
#57. [백준_C언어] 9012 : 괄호 (0) | 2021.01.30 |
#55. [백준_C언어] 2609 : 최대공약수와 최소공배수 (0) | 2021.01.29 |
#54. [백준_C언어] 2164 : 카드2 (0) | 2021.01.28 |
#53. [백준_C언어] 1978 : 소수 찾기 (0) | 2021.01.28 |