Cod sursa(job #1345179)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 17 februarie 2015 12:46:53
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int n, i;
int v[500001];
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int poz(int st, int dr){
    int x = rand() % (dr - st) + st;
    int aux;
    aux = v[st];
    v[st] = v[x];
    v[x] = aux;
    int ii = 0, jj = -1, i = st, j = dr;
    while(i < j){
        if(v[i] > v[j]){
            aux = v[i];
            v[i] = v[j];
            v[j] = aux;
            aux = ii;
            ii = -jj;
            jj = -aux;

        }
        i += ii;
        j += jj;
    }
    return i;
}

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

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

}