Cod sursa(job #1281569)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 3 decembrie 2014 13:13:52
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <ctime>
#include <stdlib.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
long a[500002],n,i;
int part(int p,int u){
    int x = p+rand()%(u-p);
    swap(a[p], a[x]);
    int i=p,j=u;
    int ii=0,jj=-1;
    while(i!=j){
        if(a[i]>a[j]){
            swap(a[i],a[j]);
            swap(ii,jj);
            ii*=-1;
            jj*=-1;
        }
        i+=ii;
        j+=jj;
    }
    return i;
}
void quicksort(int p,int u){
    if(p>=u)
        return;
    int poz=part(p,u);
    if(p<poz-1);
        quicksort(p,poz-1);
    if(u>poz+1)
        quicksort(poz+1,u);
}
int main(){
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];
    quicksort(1,n);
    for(i=1;i<=n;i++)
        fout<<a[i]<<" ";
    fin.close();fout.close();
    return 0;
}