Pagini recente » Cod sursa (job #2848641) | Cod sursa (job #108265) | Cod sursa (job #1671175) | Cod sursa (job #286673) | Cod sursa (job #274359)
Cod sursa(job #274359)
#include<stdio.h>
#include<stdlib.h>
long n,i,v[500001];
inline long sort(long st,long dr)
{long poz = st + rand() % (dr - st + 1);
long aux = v[poz]; v[poz] = v[st]; v[st] = aux;
long x=v[st];
while(st<dr)
{while(st<dr&&v[dr]>=x) dr--;
v[st]=v[dr];
while(st<dr&&v[st]<=x) st++;
v[dr]=v[st];
}
v[st]=x;
return st;
}
inline void Qsort(long st,long dr)
{
long m=sort(st,dr);
if(m-1>st) Qsort(st,m-1);
if(m+1<dr) Qsort(m+1,dr);
}
int main()
{
freopen("algsort.in","rt",stdin);
freopen("algsort.out","wt",stdout);
scanf("%ld",&n);
for(i=1;i<=n;++i) scanf("%ld",&v[i]);
Qsort(1,n);
for(i=1;i<=n;++i) printf("%ld ",v[i]);
//system("PAUSE");
return 0;
}