Cod sursa(job #260428)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 17 februarie 2009 00:33:55
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
//quick sort randomizat   
#include<stdio.h> 
#include<time.h>
#include<stdlib.h>
#define N 500001   
int n,i,a[N];   
void readd(),QS(int L,int R),prints();   
int main()   
{   
    readd();   
    QS(1,n);   
    prints();   
    return 0;   
}   
void readd()   
{   
    freopen("algsort.in","rt",stdin);   
    freopen("algsort.out","wt",stdout);   
    scanf("%d",&n);   
    for(i=1;i<=n;i++)scanf("%d",&a[i]);
	srand(time(0));
}   
void QS(int L,int R)   
{   
    int LL=L,RR=R,V,aux,MM;   
    MM=LL+rand()%(R-L+1);
	V=a[MM];   
    do  
    {   
      while(a[LL]<V)LL++;   
      while(a[RR]>V)RR--;   
      if(LL<=RR){aux=a[LL];a[LL]=a[RR];a[RR]=aux;LL++;RR--;}   
    }while(LL<=RR);   
    if(L<RR)QS(L,RR);   
    if(LL<R)QS(LL,R);   
}   
void prints()   
{   
    for(i=1;i<=n;i++)printf("%d ",a[i]);   
}