Pagini recente » Cod sursa (job #2924506) | Cod sursa (job #629043) | Cod sursa (job #2033126) | Cod sursa (job #60312) | Cod sursa (job #349346)
Cod sursa(job #349346)
#include <stdio.h>
#define nmax 500009
typedef long long big;
typedef unsigned uint;
FILE *f=fopen("algsort.in","r");
FILE *g=fopen("algsort.out","w");
big A[nmax];
uint n;
void swap(big &x,big &y)
{
big xx=x;
x=y;
y=xx;
}
void read()
{
fscanf(f,"%ld",&n);
for(int i=1;i<=n;i++)
fscanf(f,"%ld",&A[i]);
}
void qsort(uint l,uint r)
{
uint st=l,dr=r;
big piv=A[(l+r)/2];
while(st<dr)
{
while(A[st]<piv) st++;
while(A[dr]>piv) dr--;
if(st<=dr)
{
swap(A[st],A[dr]);
st++;
dr--;
}
}
if(dr>l)
qsort(l,dr);
if(st<r)
qsort(st,r);
}
void show()
{
for(int i=1;i<=n;i++)
fprintf(g,"%ld ",A[i]);
}
int main()
{
read();
qsort(1,n);
show();
return 0;
}