Cod sursa(job #2900747)

Utilizator AlexPascu007Pascu Ionut Alexandru AlexPascu007 Data 12 mai 2022 08:42:35
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <random>
#include <time.h>
using namespace std;

// quick sort

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

const int DIM = 500010;

int n, v[DIM], w[DIM];
void sorteaza(int st, int dr);
int poz(int st, int dr);

int main() {
    fin >> n;
    for (int i = 0; i < n; i++) {
        fin >> v[i];
    }
    sorteaza(0, n - 1);
    for (int i = 0; i < n; i++)
        fout << v[i] << " ";
    return 0;
}


void sorteaza(int st, int dr) {
    if (st < dr) {
        int p = poz(st, dr);
        sorteaza(st, p - 1);
        sorteaza(p + 1, dr);
    }
}

int poz(int st, int dr) {
    int dst = 0, ddr = -1;
    while (st < dr) {
        if (v[st] > v[dr]) {
            swap(v[st], v[dr]);
            swap(dst, ddr);
            dst = -dst;
            ddr = -ddr;
        }
        st += dst;
        dr += ddr;
    }
    return st;
}