Cod sursa(job #767189)

Utilizator igsifvevc avb igsi Data 12 iulie 2012 22:35:25
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 0.92 kb
#include<stdio.h>

typedef unsigned int uint;

FILE *in, *out;
uint v[500000], N;

void quicksort(int l, int r)
{
    int aux, ll, rr, il, ir, pivot;

    if(l < r)
    {
        ll = l;
        rr = r;
        il = 0; 
        ir = -1;
    
        while(ll < rr)
        {
            if(v[ll] > v[rr])
            {
                aux = v[ll]; v[ll] = v[rr]; v[rr] = aux;
                aux = -il; il = -ir; ir = aux;
            }
            ll += il;
            rr += ir;
        }

        pivot = ll;
        
        quicksort(l, pivot - 1);
        quicksort(pivot + 1, r);
    }
}

int main()
{
    int i;

    in = fopen("algsort.in", "r");
    out = fopen("algsort.out", "w");
    
    fscanf(in, "%d", &N);
    for(i = 0; i < N; ++i)
        fscanf(in, "%d", &v[i]);

    quicksort(0, N-1);

    for(i = 0; i < N; ++i)
        fprintf(out, "%d ", v[i]);
    fprintf(out, "\n");

    fclose(in);
    fclose(out);
    return 0;
}