Cod sursa(job #1529282)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 20 noiembrie 2015 18:18:02
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>

#include <cstdio>
#include <ctime>
#include <cstdlib>
using namespace std;

const int MAX_N = 500002;

int v[MAX_N];

void quickSort(int left, int right) {
    if(left == right) {
        return;
    }

    int pivot = left + rand() % (right - left + 1);
    int i = left, j = right;

    while(i <= j) {
        while(v[i] < v[pivot]) {
            ++i;
        }
        while(v[j] >= v[pivot]) {
            j--;
        }

        if(i < j) {
            swap(v[i], v[j]);
        }
        i++;
        j--;
    }


    quickSort(left, pivot);
    if(pivot < right) {
        quickSort(pivot + 1, right);
    }
}

int main() {
    srand(time(NULL));

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

    int n;
    scanf("%d", &n);
    for(int i = 0; i < n; ++i) {
        scanf("%d", &v[i]);
    }

    quickSort(0, n - 1);

    for(int i = 0; i < n; ++i) {
        printf("%d ", v[i]);
    }
    printf("\n");

    fclose(stdin);
    fclose(stdout);

    return 0;
}