Cod sursa(job #2482044)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 27 octombrie 2019 18:54:47
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#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() {

    ifstream fin("algsort.in");
    ofstream fout("algsort.out");

    fin >> N;

    for (int i = 1; i <= N; i ++) {
        fin >> array[i];
    }


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

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

    fout << "\n";

    fin.close();
    fout.close();

    return 0;
}