Pagini recente » Cod sursa (job #3258527) | Cod sursa (job #238285) | Cod sursa (job #147632) | Cod sursa (job #1098953) | Cod sursa (job #2244139)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int b=32000;
struct parser{
char *B,*E,*p;
parser()
{
B=new char[b+10];
E=B+b;
Load();
}
parser &operator>>(int &x)
{
while(*p<'0' || *p>'9')Next();
x=0;
while(*p>='0' && *p<='9')
{
x=x*10+*p-'0';
Next();
}
return *this;
}
void Load()
{
p=B;
memset(B,0,b);
fread(B,1,b,stdin);
}
void Next()
{
p++;
if(p==E)Load();
}
};
int partitie(int *A,int Start,int End)
{
int ind=Start+rand()%(End-Start+1);
swap(A[ind],A[End]);
int pivot=A[End];
int pIndex=Start;
for(int i=Start;i<End;i++)
{
if(A[i]<=pivot)
{
swap(A[i],A[pIndex]);
pIndex++;
}
}
swap(A[End],A[pIndex]);
return pIndex;
}
void quick(int *A,int Start,int End)
{
if(Start<End)
{
int index=partitie(A,Start,End);
quick(A,Start,index-1);
quick(A,index+1,End);
}
}
int main()
{
/*freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
parser fin;*/
int n,v[500001];
fin>>n;
for(int i=1;i<=n;i++)fin>>v[i];
quick(v,1,n);
for(int i=1;i<=n;i++)
{
fout<<v[i]<<' ';
//printf("%d ",v[i]);
}
return 0;
}