Pagini recente » Cod sursa (job #1045321) | Cod sursa (job #2036271) | Cod sursa (job #235083) | Cod sursa (job #2909058) | Cod sursa (job #257035)
Cod sursa(job #257035)
#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 ];
inline 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);
}
m = ( l < m ) ? ( m - 1 ) : ( m + 1);
}
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;
}