Cod sursa(job #1033050)

Utilizator impulseBagu Alexandru impulse Data 16 noiembrie 2013 13:26:53
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 0.88 kb
#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;
}