Cod sursa(job #1221097)

Utilizator mariusn01Marius Nicoli mariusn01 Data 19 august 2014 14:09:23
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <stdlib.h>
#include <time.h>

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

int v[500010];
int n, i;

int poz(int st, int dr) {
    int x = st + rand()%(dr-st);
    int aux = v[st];
    v[st] = v[x];
    v[x] = aux;
    int ii = 0, jj = -1;

    while (st < dr) {
        if (v[st] > v[dr]) {
            aux = v[st];
            v[st] = v[dr];
            v[dr] = aux;
            aux = ii;
            ii = -jj;
            jj = -aux;
        }

        st += ii;
        dr += jj;
    }
    return st;
}

void sortare(int st, int dr) {
    if (st>=dr)
        return;
    int p = poz(st, dr);
    sortare(st, p-1);
    sortare(p+1, dr);
}


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