Pagini recente » Cod sursa (job #688462) | Cod sursa (job #2156394) | Cod sursa (job #2729773) | Cod sursa (job #1508599) | Cod sursa (job #1018626)
#include <iostream>
#include <fstream>
using namespace std;
long v[500001];
long n;
void ordo ( int p, int u )
{
int aux;
if ( v[p] > v[u] )
{
aux = v[p]; v[p] = v[u]; v[u] = aux;
}
}
void interclas(int p, int m, int u)
{
int k,i,j;
long a[500001];
k=0; i=p; j=m+1;
while ((i <= m) && (j <= u))
if (v[i] < v[j])
{
k++;
a[k] = v[i];
i++;
}
else
{
k++;
a[k] = v[j];
j++;
}
if (i <= m)
for (j=i; j<=m; j++)
{
k++; a[k] = v[j];
}
else
for (i=j;i<=u;i++)
{
k++;a[k]=v[i];
}
for (i=1;i<=k;i++)
v[p+i-1] = a[i];
}
void merge(int p, int u)
{
int m;
if ((u-p) <= 1) ordo(p,u);
else
{
m=((p + u) / 2);
merge(p, m);
merge(m+1, u);
interclas(p, m, u);
}
}
int main()
{ int i;
ifstream f("algsort.in");
ofstream g("algsort.out");
f >> n;
for (i=1;i<=n;i++)
f >> v[i];
merge(1,n);
for (i=1;i<=n;i++)
g << v[i] << " ";
f.close();
g.close();
return 0;
}