Pagini recente » Cod sursa (job #1133004) | Cod sursa (job #1218302) | Cod sursa (job #2265631) | Cod sursa (job #2960769) | Cod sursa (job #257033)
Cod sursa(job #257033)
#include<stdio.h>
#define INPUT "algsort.in"
#define OUTPUT "algsort.out"
#define NMAX 500001
FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");
long N;
long A[ NMAX ];
void twist(long &__X, long &__Y)
{
__X = __X + __Y;
__Y = __X - __Y;
__X = __X - __Y;
}
void quick(long st, long dr)
{
long l = st, m = dr;
while(l != m)
{
if((l<m && A[ l ] > A[ m ]) || (l > m && A[ l ] < A[ m ]))
{
twist(A[ l ], A[ m ]);
twist(l, m);
if( l < m) --m;
else ++m;
}
else
if( l < m ) --m;
else ++m;
}
if( l != st) quick(st, l - 1);
if( l != dr) quick(l + 1, dr);
}
void readData()
{
fscanf(fin, "%ld", &N);
for(long i = 0; i < N; ++i)
fscanf(fin, "%ld", A+i);
}
int main()
{
readData();
quick(0, N - 1);
for(long i = 0; i < N; ++i)
fprintf(fout, "%ld ", A[ i ]);
fclose(fin);
fclose(fout);
return 0;
}