Cod sursa(job #2280585)

Utilizator al3xionescuIonescu Alexandru al3xionescu Data 10 noiembrie 2018 21:10:25
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <vector>
#include <cstdio>
#include <ctime>
#include <cstdlib>
const int MAX_N = 5 * 1e5;
int v[MAX_N];
void swap(int *a, int *b) {
    int t = *a;
    *a = *b;
    *b = t;
}
int partition(int left, int right) {
    int pivot = v[right];
    int i = (left - 1);
    for (int j = left; j <= right - 1; j++) {
        if (v[j] <= pivot) {
            i++;
            swap(&v[i], &v[j]);
        }
    }
    swap(&v[i + 1], &v[right]);
    return (i + 1);
}
void quickSort(int left, int right) {
    if (left >=  right) {
        return;
    }
    int pivotPos = partition(left, right);
    quickSort(left, pivotPos - 1);
    quickSort(pivotPos + 1, right);
}
int main() {
    freopen("algsort.in", "r", stdin);
    int n;
    scanf("%d", %n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &v[i]);
    }
    fclose(stdin);
    quickSort(0, n - 1);
    freopen("algsort.out", "w", stdout);
    for (int i = 0; i < n; i++) {
        printf("%d", v[i]);
    }
    printf("\n");
    fclose(stdout);
    return 0;
}