Pagini recente » Cod sursa (job #1174179) | Cod sursa (job #584124) | Cod sursa (job #2907678)
#include <fstream>
#define N 500002
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int x[N];
void merge(int l, int r, int m)
{
int n1 = m - l + 1, n2 = r - m, i, j = 0, k = l;
int L[n1], R[n2];
for (int i = 0; i < n1; i++)
L[i] = x[l + i];
for (int i = 0; i < n2; i++)
R[i] = x[m + i + 1];
for (i = 0; i < n1 && j < n2; k++)
if (L[i] < R[j])
x[k] = L[i++];
else
x[k] = R[j++];
while (i < n1)
x[k++] = L[i++];
while (j < n2)
x[k++] = R[j++];
}
void mergesort(int l, int r)
{
if (r > l)
{
int m = (l + r) / 2;
mergesort(l, m);
mergesort(m + 1, r);
merge(l, r, m);
}
}
int main()
{
int n, i;
in >> n;
for (i = 0; i < n; ++i)
in >> x[i];
mergesort(0, n - 1);
for (i = 0; i < n; ++i)
out << x[i] << " ";
out << "\n";
return 0;
}