Pagini recente » Cod sursa (job #1030030) | Cod sursa (job #1482133) | Cod sursa (job #1435923) | Cod sursa (job #2152108) | Cod sursa (job #1032729)
#include<iostream>
#include<fstream>
using namespace std;
int x[500000], n;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
void interclaseaza (int s, int d, int m)
{
int i = s, j = m + 1, k = 0, v[500000];
while (i <= m && j <= d)
{
if (x[i] < x[j])
{
v[k] = x[i];
i++;
}
else
{
v[k] = x[j];
j++;
}
k++;
}
while (i <= m)
{
v[k] = x[i];
i++;
k++;
}
while (j <= d)
{
v[k] = x[j];
j++;
k++;
}
for (k = 0, i = s; i <= d; k++, i++)
x[i] = v[k];
}
void MergeSort (int s, int d)
{
if (s < d)
{
int m = (s + d) / 2;
MergeSort (s, m);
MergeSort(m + 1, d);
interclaseaza (s, d, m);
}
}
int main ()
{
f >> n;
for (int i = 0; i < n; i++)
f >> x[i];
f.close();
MergeSort(0, n - 1);
for (int i = 0; i < n; i++)
g << x[i] << ' ';
g.close();
return 0;
}