Pagini recente » Cod sursa (job #1529738) | Cod sursa (job #2143034) | Cod sursa (job #565601) | Cod sursa (job #1795739) | Cod sursa (job #1492268)
#include<cstdio>
#include<algorithm>
using namespace std;
int v[100005],v2[100005];
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)
{
if(t)
{
v2[i1]=v[i];
i1++;
t=0;
}
else
{
v2[i2]=v[i];
i2--;
t=1;
}
}
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++)
v[i]=v2[i];
sor(st,i1-1);sor(i1,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;
}