Cod sursa(job #1281376)

Utilizator TibixbAndrei Tiberiu Tibixb Data 3 decembrie 2014 07:45:50
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
#include <time.h>
#include <stdlib.h>
using namespace std;
int n, i, v[500003];
int poz(int p, int u){

    int t = p+rand()%(u-p);

    swap(v[p], v[t]);

    int i=p; int j=u;
    int ii=0; int jj=-1;
    while(i!=j){
        if(v[i]>v[j]){
            swap(v[i], v[j]);
            swap(ii, jj);
            ii=-ii;
            jj=-jj;
        }
        i+=ii;
        j+=jj;
    }
    return i;
}
void sort(int p, int u){
    if(p<u){
        int k=poz(p, u);
        sort(p, k-1);
        sort(k+1, u);
    }
}
ifstream in("algsort.in");
ofstream out("algsort.out");
int main(){
    srand(time(0));
    in>>n;
    for(i=1; i<=n; i++)
        in>>v[i];
    sort(1, n);
    for(i=1; i<=n; i++)
        out<<v[i]<<" ";
return 0;
}