Cod sursa(job #298141)
Utilizator | Ivan Cristian cristik | Data | 5 aprilie 2009 21:19:13 |
---|---|---|---|
Problema | Sortare prin comparare | Scor | 100 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.7 kb |
#include <stdio.h>
int a[500001],n;
void quick(int x,int y)
{
int i,j,p,aux;
if(x<y)
{
i=x-1;
j=y+1;
p=a[(x+y)/2];
while(i<j)
{
do i++; while(a[i]<p);
do j--; while(a[j]>p);
if(i<j)
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
quick(x,i-1);
quick(j+1,y);
}
}
int main()
{
int i;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i=1; i<=n; i++) scanf("%d",&a[i]);
quick(1,n);
for(i=1; i<=n; i++) printf("%d ",a[i]);
return 0;
}