Pagini recente » Cod sursa (job #357204) | Cod sursa (job #2603130) | Cod sursa (job #1989694) | Cod sursa (job #240443) | Cod sursa (job #1826493)
#include <iostream>
#include <thread>
#include <algorithm>
using namespace std;
int N;
void mergesort_multithreaded(int *V, int left, int right) {
if (left >= right)
return;
int mid = (left + right) / 2;
thread a(mergesort_multithreaded, V, left, mid);
mergesort_multithreaded(V, mid + 1, right);
a.join();
inplace_merge(V + left, V + mid + 1, V + right + 1);
}
int main() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int i;
scanf("%d", &N);
int *V = new int[N];
for (i = 0; i < N; ++i)
scanf("%d", &V[i]);
mergesort_multithreaded(V, 0, N - 1);
for (i = 0; i < N; ++i)
cout << V[i] << ' ';
return 0;
}