Cod sursa(job #1683878)

Utilizator mvcl3Marian Iacob mvcl3 Data 10 aprilie 2016 17:05:46
Problema Sortare prin comparare Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>

void swap(int *a, int *b)
{
    int aux = *a;
    *a = *b;
    *b = aux;
}

void quickSort(int st, int dr, int *a)
{
    int i = st, j = dr, pivot = (st + dr) >> 1;

    do  {

        while(a[i] < pivot && i < dr)   ++i;
        while(a[j] > pivot && j > st)   --j;

        if(i <= j)  {
            swap(&a[i], &a[j]);
            ++i, --j;
        }

    }   while(i <= j);

    if(st < j)  quickSort(st, j, a);
    if(i < dr)  quickSort(i, dr, a);
}

int main()
{
    int i, n, *arr;

    FILE *in = fopen("algsort.in", "r");
    FILE *out = fopen("algsort.out", "w");

    fscanf(in, "%d", &n);

    arr = (int *) malloc(n * sizeof(int));

    for(i = 0; i < n; ++i)
        fscanf(in, "%d", &arr[i]);

    quickSort(0, n - 1, arr);

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

    fclose(out);
    fclose(in);

    return 0;
}