# 생각
stl sort와 merge sort를 이용하여 정렬해보자
# 전체 코드
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, arr[1000000];
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
sort(arr, arr + n);
for (int i = 0; i < n; i++)
{
cout << arr[i] << '\n';
}
}
#include <bits/stdc++.h>
using namespace std;
int n, arr[1111111], tmp[1111111];
void myMerge(int st, int en)
{
int mid = (st + en) / 2;
int l = st, r = mid;
for (int i = st; i < en; i++)
{
if (r == en) tmp[i] = arr[l++];
else if (l == mid) tmp[i] = arr[r++];
else if (arr[l] <= arr[r]) tmp[i] = arr[l++];
else if (arr[r] < arr[l]) tmp[i] = arr[r++];
}
for (int i = st; i < en; i++) arr[i] = tmp[i];
}
void mergeSort(int st, int en)
{
if (st + 1 == en) return;
int mid = (st + en) / 2;
mergeSort(st, mid);
mergeSort(mid, en);
myMerge(st, en);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 0; i < n; i++) cin >> arr[i];
mergeSort(0, n);
for (int i = 0; i < n; i++) cout << arr[i] << '\n';
}
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2910_빈도 정렬 with cpp (0) | 2022.03.01 |
---|---|
[BOJ] 1181_단어 정렬 with cpp (0) | 2022.02.28 |
[BOJ] 2750_수 정렬하기 with cpp (0) | 2022.02.28 |
[BOJ] 18808_스티커 붙이기 with cpp (0) | 2022.02.21 |
[BOJ] 11651_좌표 정렬하기 2 with cpp (0) | 2022.02.20 |