Pagini recente » Cod sursa (job #2498561) | Borderou de evaluare (job #2895890) | Cod sursa (job #1812905) | Cod sursa (job #1604300) | Cod sursa (job #260428)
Cod sursa(job #260428)
//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]);
}