Pagini recente » Cod sursa (job #1715388) | Cod sursa (job #2845099) | Cod sursa (job #2812416) | Cod sursa (job #2874034) | Cod sursa (job #2059187)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int n,a[500001];
int Pivot(int s,int d)
{ int p=((s+rand()%(d-s+1))+(s+rand()%(d-s+1))+(s+rand()%(d-s+1)))/3;
int i=s-1,aux,j;
aux=a[p];
a[p]=a[d];
a[d]=aux;
for(j=s;j<=d;j++)
if(a[j]<a[d])
{ i++;
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
aux=a[i+1];
a[i+1]=a[d];
a[d]=aux;
return i+1;
}
void QS(int s,int d)
{ if(s<d)
{ int p=Pivot(s,d);
QS(s,p-1);
QS(p+1,d);
}
}
int main()
{ FILE *f,*g;
f=fopen("algsort.in","r");
g=fopen("algsort.out","w");
fscanf(f,"%d",&n);
int i;
for(i=1;i<=n;i++)
fscanf(f,"%d",&a[i]);
srand(time(0));
QS(1,n);
for(i=1;i<=n;i++)
fprintf(g,"%d ",a[i]);
return 0;
}