Pagini recente » Cod sursa (job #2705385) | Cod sursa (job #1220035) | Cod sursa (job #672386) | Cod sursa (job #114836) | Cod sursa (job #1812862)
#include <cstdio>
using namespace std;
int i,n,a[500005];
int interclasare(int p,int u,int m)
{
int i,v[500005],x,y,cnt;
for(i=p;i<=u;i++)
v[i]=0;
x=p;
y=m+1;
for(i=p;i<=u;i++)
if(a[x]<=a[y]&&x<=m||(y>u&&x<=m))
v[i]=a[x],x++;
else
if(a[y]<=a[x]&&y<=u||(x>m&&y<=u))
v[i]=a[y],y++;
for(i=p;i<=u;i++)
a[i]=v[i];
}
int divide(int p,int u)
{
int aux;
int m;
if(p>u)return 0;
else
if(u-p<=1)
{
if(a[p]>a[u])
{
aux=a[p];
a[p]=a[u];
a[u]=aux;
}
}
else
{
m=(p+u)/2;
divide(p,m);
divide(m+1,u);
interclasare(p,u,m);
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d",&a[i]);
divide(1,n);
for(i=1;i<=n;i++) printf("%d ",a[i]);
return 0;
}