Pagini recente » Cod sursa (job #2424228) | Rezultatele filtrării | Cod sursa (job #1071615) | Rezultatele filtrării | Cod sursa (job #870274)
Cod sursa(job #870274)
#include<stdio.h>
int n,x[500002],i;
int sel(int st, int dr)
{
int i,di,j,dj,aux;
i=st; j=dr;
di=+1; dj=0;
while (i<j)
{
if(x[i]>x[j])
{
aux=x[i];
x[i]=x[j];
x[j]=aux;
di=1-di;
dj=1-dj;
}
i=i+di;
j=j-dj;
}
return i;
}
void qs(int st, int dr)
{
int m;
if (st+1==dr)
{
if(x[st]>x[dr]){m=x[st]; x[st]=x[dr]; x[dr]=m;}
}else
if(st+1<dr)
{
m=sel(st,dr);
qs(st,m-1);
qs(m+1,dr);
}
}
void tip()
{
int i;
for (i=1;i<=n;i++)
printf("%d ",x[i]);
}
int main()
{
freopen("algsort.in","rt",stdin);
freopen("algsort.out","wt",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",x+i);
qs(1,n);
tip();
fclose(stdout);
fclose(stdin);
return 0;
}