반응형
#include <iostream>
#include <vector>
using namespace std;
vector<int> merge(vector<int> v1, vector<int> v2)
{
vector<int> m;
auto iter1 = v1.begin();
auto iter2 = v2.begin();
while (iter1 != v1.end() && iter2 != v2.end())
{
if (*iter1 > *iter2)
{
m.push_back(*iter2);
++iter2;
}
else
{
m.push_back(*iter1);
++iter1;
}
}
if (iter1 != v1.end())
{
for (; iter1 != v1.end(); ++iter1)
m.push_back(*iter1);
}
else
{
for (; iter2 != v2.end(); ++iter2)
m.push_back(*iter2);
}
return m;
}
vector<int> mergeSort(vector<int> v)
{
if (v.size() <= 1)
return v;
auto mid = v.begin() + v.size() / 2;
vector<int> left = mergeSort(vector<int>(v.begin(), mid));
vector<int> right = mergeSort(vector<int>(mid, v.end()));
return merge(left, right);
}
int main()
{
vector<int> v;
int N = 0;
int n = 0;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> n;
v.push_back(n);
}
v = mergeSort(v);
for (auto it = v.begin(); it != v.end(); ++it)
cout << *it << "\n";
return 0;
}
반응형
LIST
'알고리즘 문제 > 백준' 카테고리의 다른 글
[C++] 2*n 타일링 2 - 11727 (1) | 2022.11.26 |
---|---|
[C++] 2*n 타일링 - 11726 (0) | 2022.11.26 |
[C++] 쇠막대기 - 10799 (0) | 2022.11.19 |
[C++] 단어 뒤집기2(stack) - 17413 (1) | 2022.11.18 |
[C++] 덱(deque) - 10866 (0) | 2022.11.18 |