Cod sursa(job #283339)

Utilizator pedobearBacauanu Vlad pedobear Data 19 martie 2009 00:37:37
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int v[500001];
int i,p,j,n;

inline void inter (int x, int y)
{
     int aux=v[x];
     v[x]=v[y];
     v[y]=aux;
}

void quick (int x, int y)
{
     int j,p,i,k;
     if (x>=y) return;
     p=rand()%(y-x+1)+x;
     i=x-1;
     inter (p,y);
     for (j=x;j<=y;j++)
         if (v[j]<=v[y]) inter (++i,j);
     quick (x,i-1);
     quick (i+1,y);
}
     
int main ()
{
    freopen ("algsort.in","r",stdin);
    freopen ("algsort.out","w",stdout);
    
    scanf ("%d",&n);
    for (i=1;i<=n;i++) scanf ("%d",&v[i]);
    
    srand(time(0));
    quick (1,n);
    
    for (i=1;i<=n;i++) printf ("%d ",v[i]);
    
    return 0;
}