Pagini recente » Cod sursa (job #1223606) | Cod sursa (job #1193867) | Cod sursa (job #497696) | Borderou de evaluare (job #2912085) | Cod sursa (job #693951)
Cod sursa(job #693951)
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,i,v[500005],x[500005];
void merge( int a , int b)
{
int m,i,j,u=0;
if(a>=b) return ;
m=(a+b)/2;
merge(a,m);
merge(m+1,b);
i=a;j=m+1;
while(i<=m && j<=b)
{
if(i==-1 && j==-1) break;
else if(i==-1)
{
v[++u]=x[j];
j++;
}
else if(j==-1)
{
v[++u]=x[i];
i++;
}
else
{
if(x[i]<x[j])
{
v[++u]=x[i];
i++;
if(i==m+1) i=-1;
}
else
{
v[++u]=x[j];
j++;
if(j==b+1) j=-1;
}
}
}
for(i=a;i<=b;i++) x[i]=v[i-a+1];
}
int main ()
{
f>>n;
for(i=1;i<=n;i++) f>>x[i];
merge(1,n);
for(i=1;i<n;i++)
g<<x[i]<<' ';
g<<x[n]<<'\n';
return 0;
}