백준 문제풀이

백준 2750번 - C++ (merge sort)

diligent_gideok 2022. 5. 11. 19:15
#include <bits/stdc++.h>
using namespace std;
int arr[1000001];
int tmp[1000001];

void merge(int st, int  en) {
	int mid = (st + en) / 2;
	int a = st, b = mid;

	for (int i = st; i < en; i++) {
		if (a == mid) tmp[i] = arr[b++];
		else if (b == en) tmp[i] = arr[a++];
		else if (arr[a] <= arr[b]) tmp[i] = arr[a++];
		else tmp[i] = arr[b++];
	}
	for (int i = st; i < en; i++) {
		arr[i] = tmp[i];
	}
}

void merge_sort(int st, int en) {
	if (st + 1 == en) return;
	int mid = (st + en) / 2;
	merge_sort(st, mid);
	merge_sort(mid, en);
	merge(st, en);
}

int main(void) {
	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';
}

'백준 문제풀이' 카테고리의 다른 글

백준 11931번 - C++ (merge sort)  (0) 2022.05.11
백준 10989번 - C++  (0) 2022.05.11
백준 2751번 - C++ (merge sort)  (0) 2022.05.11
백준 14891번 - C++  (0) 2022.05.04
백준 12100번 - C++  (0) 2022.04.30