Pagini recente » Cod sursa (job #1287633) | Cod sursa (job #2575968) | Cod sursa (job #3255061) | Cod sursa (job #697621) | Cod sursa (job #370883)
Cod sursa(job #370883)
#include<stdio.h>
#include<cstdlib>
int n,v[500001];
inline void schimb(int &a, int &b)
{
int aux;
aux = b;
b= a;
a = aux;
}
int partitie(int st, int dr)
{
int poz = st,piv,pp=st+rand()%(dr-st+1);
schimb(v[dr],v[pp]);
piv=v[dr];
for(int i = st ; i < dr ; ++i)
if(v[i] < piv)
schimb(v[i],v[poz++]);
schimb(v[poz],v[dr]);
return poz;
}
void sort(int st, int dr)
{
if(st >= dr)
return ;
int p = partitie(st,dr);
sort(st,p-1);
sort(p+1,dr);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
sort(1,n);
for(int i = 1;i<=n;i++)
printf("%d ",v[i]);
return 0;
}