Cod sursa(job #1281560)

Utilizator AndyCatrunaCatruna Andy AndyCatruna Data 3 decembrie 2014 12:56:43
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <stdlib.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500001],n,i;
int poz (int p , int u){
    int i=p, j=u, ii=0, jj=-1 , aux;
    int x = p+rand()%(u-p);
    aux=v[x];v[x]=v[i];v[i]=v[x];
    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 p, int u){
    if(p<u){
        int k=poz(p,u);
        sorteaza(p,k-1);
        sorteaza(k+1,u);
    }

}
int main(){
    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;
}