Cod sursa(job #2542466)

Utilizator canmihaiCancescu Mihai canmihai Data 10 februarie 2020 00:39:40
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <random>
#include <ctime>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout("algsort.out");
int n,v[500010],ran,aux,pv;
int poz(int st,int dr){
    int i=st,j=dr,i2=0,j2=-1;
    while(i!=j){
        if(v[i]>v[j]){
            swap(v[i],v[j]);
            aux=i2;
i2=-j2;
            j2=-aux;
        }
        i+=i2;
        j+=j2;
    }
    return i;
}
void quicksort(int st,int dr){
    if(st<dr){
        pv=poz(st,dr);
        quicksort(st,pv-1);
        quicksort(pv+1,dr);
    }
}
int main() {
    fin>>n;
    srand(time(0));
    for(int i=1;i<=n;i++)
        fin>>v[i];
    for(int i=n;i>=3;i--) {
        ran=1+rand()%(i-1);
        swap(v[i],v[ran]);
    }
    quicksort(1,n);
    for(int i=1;i<=n;i++)
        fout<<v[i]<<" ";
}