Pagini recente » Cod sursa (job #581297) | Cod sursa (job #1512233) | Cod sursa (job #1870307) | Cod sursa (job #272984) | Cod sursa (job #315434)
Cod sursa(job #315434)
#include<stdio.h>
long n;
int s;
long v[500000];
void read()
{
scanf("%ld",&n);
long i;
s=0;
scanf("%ld",&v[1]);
for (i=2;i<=n;i++)
{
scanf("%ld",&v[i]);
if (v[i]<v[i-1])
s=1;
}
if (!s)
{
for (i=n;i>=1;i--)
printf("%ld ",v[i]);
}
}
long part(long st,long dr)
{
long p,aux,i,j;
i=st-1;
j=dr+1;
p=v[(st+dr)/2];
while (1)
{
do {i++;} while (v[i]<p);
do {j--;} while (v[j]>p);
if (i<j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
else return j;
}
}
void quicks(long st,long dr)
{
long p;
if (st<dr)
{
p=part(st,dr);
quicks(st,p);
quicks(p+1,dr);
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
read();
if (s)
{
quicks(1,n);
long i;
for (i=1;i<=n;i++)
{
printf("%ld ",v[i]);
}
}
printf("\n");
return 0;
}