Pagini recente » Cod sursa (job #1790733) | Cod sursa (job #1285448) | Cod sursa (job #2001390) | Cod sursa (job #1770544) | Cod sursa (job #245769)
Cod sursa(job #245769)
//randomized quicksort
#include <cstdio>
#include <cstdlib>
#define N 500000
int A[N],n,i;
int poz(int a, int b)
{
int i,j,t,p=rand()%(b-a)+1;
p+=a-1;
t=A[a]; A[a]=A[p]; A[p]=t;
for (i=0, j=-1; a<b; a+=i, b+=j)
if (A[a]>A[b])
{
t=A[a]; A[a]=A[b]; A[b]=t;
t=i; i=-j; j=-t;
}
return a;
}
void sort(int a, int b)
{
if (a<b)
{
int m=poz(a,b);
sort(a,m-1);
sort(m+1,b);
}
}
int main()
{
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
scanf("%d\n",&n);
for (i=1; i<=n; i++) scanf("%d",&A[i]);
sort(1,n);
for (i=1; i<=n; i++) printf("%d ",A[i]);
return 0;
}