Cod sursa(job #1346066)

Utilizator MihneaGhiraMihnea MihneaGhira Data 18 februarie 2015 00:11:55
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
#include<time.h>
#include<stdlib.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,i;
int v[500001];
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;

}