Pagini recente » Cod sursa (job #2724181) | Cod sursa (job #1842326) | Cod sursa (job #725106) | Cod sursa (job #128747) | Cod sursa (job #305352)
Cod sursa(job #305352)
#include<stdio.h>
long n,x[500001];
int ok;
long partitie(long st, long dr)
{
long i,j,m,p,aux;
m=(st+dr)/2;
i=st-1;
j=dr+1;
p=x[m];
while(1)
{
do{++i;} while(x[i]<p);
do{--j;} while(x[j]>p);
if(i<j)
{
aux=x[i];
x[i]=x[j];
x[j]=aux;
}
else return j;
}
}
void quicks(long st, long dr)
{
long p;
if(st<dr)
{
p=partitie(st,dr);
quicks(st,p);
quicks(p+1,dr);
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%ld",&n);
long i;
for(i=1;i<=n;++i)
{
scanf("%ld",&x[i]);
if((x[i-1]<=x[i]) && (ok!=2))
ok=1;
else
ok=2;
}
if(ok==2)
{
quicks(1,n);
for(i=1;i<=n;++i)
printf("%ld ",x[i]);
}
else
{
for(i=n;i>=1;--i)
printf("%ld ",x[i]);
}
printf("\n");
return 0;
}