Cod sursa(job #2237612)

Utilizator Bulboaca_EugenBulboaca Alexandru Eugen Bulboaca_Eugen Data 2 septembrie 2018 13:52:00
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

int v[500001];
int copie[500001];
int randomGenerator () {
    return (rand() << 14) + rand(); ///rand -> numar random intre 0 si 2^16 - 1
}

int randomGeneratorInterval (int st, int dr) {
    return randomGenerator() % (dr - st + 1) + st;
}
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void quicksortt(int st, int dr){
    if(dr - st <= 0) return;
    int x = randomGeneratorInterval(st , dr), p = st;
    for(int i = st; i <= dr; ++i){
        if(v[i] <= v[x] && i != x) copie[p++] = v[i];
    }
    int k = p;
    copie[p++] = v[x];
    for(int i = st ;i <= dr; ++i){
        if(v[i] > v[x]) copie[p++] = v[i];
    }
    for(int i = st; i <= dr; i++){
        v[i] = copie[i];
    }
    quicksortt(st, k - 1);
    quicksortt(k + 1, dr);
}
int main() {
    int n;
    fin >> n;
    for(int i = 1; i <= n; ++i){
        fin >> v[i];
    }
    quicksortt(1, n);
    for(int i = 1; i <= n; ++i) fout << v[i] << " " ;
    return 0;
}