Cod sursa(job #2482053)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 27 octombrie 2019 19:05:17
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>
#include <algorithm>

#define DIM 500001

using namespace std;

int N;
int array[DIM];

int partition(int left, int right) {

    int pivot = array[right];
    int i = left;

    for (int j = left; j < right; ++ j) {
        if (array[j] <= pivot) {
            swap(array[i], array[j]);
            ++ i;
        }
    }
    swap(array[i], array[right]);

    return i;
}

void quick_sort(int left, int right) {

    if (left >= right) {
        return;
    }

    int random = left + rand() % (right - left + 1);
    swap(array[random], array[right]);
    int pos = partition(left, right);

    quick_sort(left, pos - 1);
    quick_sort(pos + 1, right);
}

int main() {

    FILE *fin = fopen("algsort.in", "r");
    FILE *fout = fopen("algsort.out", "w");

    fscanf(fin, "%d", &N);

    for (int i = 1; i <= N; i ++) {
        fscanf(fin, "%d", &array[i]);
    }


//    srand(time(NULL));
//    quick_sort(1, N);

    sort(array + 1, array + N + 1);

    for (int i = 1; i <= N; i ++) {
        fprintf(fout, "%d ", array[i]);
    }

    fscanf(fout, "\n");

    fclose(fin);
    fclose(fout);

    return 0;
}