Pagini recente » Cod sursa (job #2745143) | Cod sursa (job #541813) | Cod sursa (job #541093) | Cod sursa (job #2200795) | Cod sursa (job #2752109)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int MAXN = 5e5;
int a[MAXN], aux[MAXN];
void merge_sort(int l, int r) { /// capetele secventei ce o sortam din vectorul initial
if (l == r)
return;
int mid = (l + r) >> 1, p1 = l, p2 = mid + 1, p = l;
merge_sort(l, mid);
merge_sort(mid + 1, r);
while (p1 <= mid && p2 <= r)
if (a[p1] < a[p2])
aux[p++] = a[p1++];
else aux[p++] = a[p2++];
while (p1 <= mid)
aux[p++] = a[p1++];
while (p2 <= r)
aux[p++] = a[p2++];
for (int i = l; i <= r; ++i)
a[i] = aux[i];
}
int main() {
int N;
fin >> N;
for (int i = 0; i < N; ++i) /// citire vector(indexat de la 0)
fin >> a[i];
merge_sort(0, N - 1); /// sortare vector
for (int i = 0; i < N; ++i) /// afisare vector
fout << a[i] << ' ';
fout << '\n';
return 0;
}