[문제]
[풀이]
머지 소트(merge sort)를 이용한 정렬 풀이
[코드]
#include <iostream>
using namespace std;
int n=10;
int arr[1000001];
int tmp[1000001];
void merge(int st, int en){
int mid = (st+en)/2;
int lidx = st;
int ridx = mid;
for(int i=st; i< en; i++){
if(ridx == en) tmp[i] = arr[lidx++];
else if(lidx == mid) tmp[i] = arr[ridx++];
else if(arr[lidx] <= arr[ridx]) tmp[i] = arr[lidx++];
else tmp[i] = arr[ridx++];
}
for(int i=st; i< en; i++) arr[i] = tmp[i];
}
void merge_sort(int st, int en){
if(en == st+1) return;
int mid = (st+en)/2;
merge_sort(st,mid);
merge_sort(mid, en);
merge(st,en);
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
for(int i=0; i<n; i++)
cin >> arr[i];
merge_sort(0, n);
for(int i=0; i<n; i++) cout << arr[i] << '\n';
}
'✏️ Algorithm > 알고리즘 풀이' 카테고리의 다른 글
백준 2579번: 계단 오르기 - C++ (0) | 2022.02.13 |
---|---|
백준 11728번 - 배열 합치기 C++ (0) | 2022.02.06 |
백준 15686 - 치킨 배달 / C++ (0) | 2022.01.23 |
백준 - 12100번 2048 (Easy) / C++ (0) | 2022.01.23 |
백준 18808 - 스티커 붙이기 / C++ (0) | 2022.01.23 |