Pagini recente » Cod sursa (job #610539) | Profil Pufosenia_09 | Cod sursa (job #621123) | Cod sursa (job #127031) | Cod sursa (job #1492272)
#include<cstdio>
#include<cstdlib>
int v[500005],v2[500005];
void sor(int st,int fi)
{
if(st>=fi)
return ;
int in,po,x,i,t,i1,i2;
in=st;
po=rand();
po=po%(fi-st+1);
x=v[st+po];
t=1;
i1=st;
i2=fi;
for(i=st;i<=fi;i++)
{
if(v[i]<x)
{
v2[i1]=v[i];
i1++;
}
else
if(v[i]>x)
{
v2[i2]=v[i];
i2--;
}
}
for(i=st;i<=fi;i++)
if(i>=i1 && i<=i2)
v[i]=x;
else
v[i]=v2[i];
sor(st,i1-1);sor(i2+1,fi);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
sor(1,n);
for(i=1;i<=n;i++)
printf("%d ",v[i]);
return 0;
}