알고리즘 문제/백준

[C++] 수 정렬하기 2(병합정렬) - 2751

우대비 2022. 11. 22. 10:27
반응형
#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