Pagini recente » Cod sursa (job #1333472) | Cod sursa (job #683892) | Cod sursa (job #124487) | Rating Vieru Tudor (VieruTudor) | Cod sursa (job #1033050)
#include <stdio.h>
#include <math.h>
#define fin "algsort.in", "r"
#define fou "algsort.out", "w"
typedef unsigned long kint;
int quick(kint* a, int st, int dr)
{
if(st >= dr) return 0;
int s = st, d = dr;
int w = 0;
while(st < dr)
{
if(a[st] <= a[dr]) { if(w) dr--; else st++; }
else
{
kint X = a[st] ^ a[dr];
a[st] ^= X;
a[dr] ^= X;
w ^= 1;
}
}
quick(a, s, st - 1);
quick(a, st + 1, d);
return 0;
}
int main()
{
int n;
FILE* in = fopen(fin);
FILE* out = fopen(fou);
fscanf(in, "%d", &n);
kint *A = malloc(n * sizeof(kint));
int i;
for(i = 0; i < n; i++)
fscanf(in, "%u", A + i);
quick(A, 0, n-1);
for(i = 0; i < n; i++)
fprintf(out, "%u ", A[i]);
fclose(out);
return 0;
}