Cod sursa(job #1359727)

Utilizator theory1TeodorCotet theory1 Data 25 februarie 2015 01:23:57
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <stdlib.h>

#define NMAX 500000

void swap(int *A, int *B) {
    int aux = *A;
    *A = *B;
    *B = aux;
}

void quick_sort(int v[], int st, int dr) {

    int p = v[dr]; // alegem pivotul
    int index = st;

    for(int i = st; i <= dr - 1; ++i)
        if(p > v[i]) {
            swap(&v[i], &v[index]);
            index++;
        }
    swap(&v[dr], &v[index]);
    if(index > st + 1) quick_sort(v, st, index - 1);
    if(index + 1 < dr) quick_sort(v, index + 1, dr);
}

int main() {

    int N; int v[NMAX];

    FILE *in = freopen("algsort.in", "r", stdin);
    FILE *out = freopen("algsort.out", "w", stdout);

    scanf("%d", &N);

    for(int i = 1;  i <= N; ++i)
        scanf("%d", &v[i]);
    quick_sort(v, 1, N);

    for(int i = 1; i <= N; ++i)
        printf("%d ", v[i]);
   // printf("x");
    return 0;
}