Cod sursa(job #2540424)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 7 februarie 2020 09:56:31
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>
#define cin fin
#define cout fout

using namespace std;

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

int n;
int v[500005];

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

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

int main(){
    cin >> n;
    for (int i=1; i<=n; i++){
        cin >> v[i];
    }
    srand (time(0));
    cuicsort (1, n);
    for (int i=1; i<=n; i++){
        cout << v[i] << " ";
    }
    return 0;
}