Cod sursa(job #2792007)

Utilizator guzgandemunteIonescu Laura guzgandemunte Data 31 octombrie 2021 17:21:03
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
#define NMAX 500000

using namespace std;

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

int N, v[NMAX];

int partitie(int st, int dr)
{
    int pivot = v[st + rand() % (dr - st + 1)];
    int i = st - 1, j = dr + 1, tmp;

    while (1){
        do
            i++;
        while (v[i] < pivot);

        do
            j--;
        while (v[j] > pivot);

        if (i >= j) return j;

        tmp = v[i], v[i] = v[j], v[j] = tmp;
    }
}

void quickSort(int st, int dr)
{
    if (st < dr){
        int pivot = partitie(st, dr);
        quickSort(st, pivot);
        quickSort(pivot + 1, dr);
    }
}

int main()
{
    fin >> N;
    for (int i = 0; i < N; ++i) fin >> v[i];

    quickSort(0, N - 1);

    for (int i = 0; i < N; ++i) fout << v[i] << " ";

    fin.close();
    fout.close();
    return 0;
}