Cod sursa(job #1849775)

Utilizator 1475369147896537415369Andrei Udriste 1475369147896537415369 Data 17 ianuarie 2017 20:12:54
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.96 kb
#include<stdio.h>
#include<stdlib.h>

int N, i, x, a[500004];

//--------------------------------------------
int part(int st, int dr){
    int aux, m, p, i, j;

    m = (st + dr) / 2;
    p = a [m];
    i = st - 1;
    j = dr + 1;
    while (1){
        do {++i;}while(a [i] < p);
        do {--j;}while(a [j] > p);
        if (i < j) {
            aux = a [i];
            a [i] = a [j];
            a [j] = aux;
        }
        else return j;
    }
}

void QuickSort(int st, int dr){
    int m, sp;

    if (st < dr){
        sp = part(st, dr);
        QuickSort(st, sp);
        QuickSort(sp + 1, dr);
    }
}
//--------------------------------------------
int main() {

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

scanf("%d", &N);

for(i=0; i<N; i++){
    scanf("%d", &a[i]);
}
QuickSort(0, N-1);

for(i=0; i<N; i++){
    printf("%d ", a[i]);
}
}
//--------------------------------------------