Cod sursa(job #1513163)

Utilizator theprdvtheprdv theprdv Data 29 octombrie 2015 01:53:53
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.81 kb
/* QuickSort */

#include <stdio.h>
#include <assert.h>
#include <string.h>

#define MAXN 500002

int N, A[MAXN];

void qsort(int l, int r)
{
    if (l >= r) return;

    int pivot = A[l + rand() % (r - l)],
        i = l, j = r, aux;

    do
    {
        while(A[i] < pivot) ++i;
        while(A[j] > pivot) --j;

        if (i <= j)
        {
            aux = A[i];
            A[i] = A[j];
            A[j] = aux;
            ++i, --j;
        }
    } while(i < j);

    qsort(l, j);
    qsort(i, r);

}

int main()
{
    assert(freopen("algsort.in", "r", stdin));
    freopen("algsort.out", "w", stdout);

    scanf("%d", &N);
    int i;
    for (i = 0; i < N; ++i) scanf("%d", &A[i]);

    qsort(0, N - 1);
    for (i = 0; i < N; ++i) printf("%d ", A[i]);

    return 0;
}