Pagini recente » Cod sursa (job #2861426) | Cod sursa (job #542320) | Cod sursa (job #1994204) | Cod sursa (job #3125016) | Cod sursa (job #1235062)
#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])
{
++i;
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
j++;
}
++i;
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;
}