Pagini recente » Cod sursa (job #255720) | Cod sursa (job #1870424) | Cod sursa (job #2492433) | Cod sursa (job #1894828) | Cod sursa (job #1237524)
#include <cstdio>
#include <cstdlib>
using namespace std;
const char InFile[]="algsort.in";
const char OutFile[]="algsort.out";
const int DIMN=500010;
int n,v[DIMN];
int part(int a,int b);
void read()
{
freopen(InFile,"r",stdin);
scanf("%d ",&n);
for(int i=1;i<=n;++i)
scanf("%d ",&v[i]);
}
void quicksort(int p,int r)
{
if(p<r)
{
int q=part(p,r);
quicksort(p,q-1);
quicksort(q+1,r);
}
}
int part(int p,int r)
{
int i,j,aux;
i=p-1;
j=p;
int t=p+rand()%(r-p+1);
aux=v[r];
v[r]=v[t];
v[t]=aux;
while(j!=r)
{
if(v[j]<=v[r])
{
aux=v[++i];
v[i]=v[j];
v[j]=aux;
}
j++;
}
aux=v[r];
v[r]=v[++i];
v[i]=aux;
return i;
}
void write()
{
freopen(OutFile,"w",stdout);
for(int i=1;i<=n;++i)
printf("%d ",v[i]);
}
int main()
{
read();
quicksort(1,n);
write();
return 0;
}