Pagini recente » Cod sursa (job #738019) | Cod sursa (job #1730068) | Cod sursa (job #1043155) | Cod sursa (job #2055705) | Cod sursa (job #1019967)
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v[500000],aux[500000],n;
void interclasare(long a,long b)
{
long i,j,m=(a+b)/2,nr=1;
i=a;
for(j=m+1;a<=m&&j<=b;)
{
if(v[a]<v[j])
{
aux[nr]=v[a];
nr++;
a++;
}
else
{
aux[nr]=v[j];
j++;
nr++;
}
}
if(a<=m)
for(;a<=m;a++)
{
aux[nr]=v[a];
nr++;
}
if(j<=b)
for(;j<=b;j++)
{
aux[nr]=v[j];
nr++;
}
a=i;
for(j=1;j<nr;j++)
{
v[a]=aux[j];
a++;
}
}
void mergesort(int s,int d)
{
int m=(s+d)/2;
if (s==d||s>d)
return;
mergesort(s,m);
mergesort(m+1,d);
interclasare(s,d);
}
void citire()
{
int i;
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
}
int main()
{
citire();
mergesort(1,n);
for(long i=1;i<=n;i++)
out<<v[i]<<" ";
return 0;
}