Pagini recente » Cod sursa (job #2167268) | Cod sursa (job #2657763) | Cod sursa (job #692041) | Cod sursa (job #1727635) | Cod sursa (job #370885)
Cod sursa(job #370885)
#include<fstream>
#include<cstdlib>
using namespace std;
int n,v[500001];
inline void schimb(int &a, int &b)
{
int aux;
aux = b;
b= a;
a = aux;
}
int partitie(int st, int dr)
{
int poz = st,piv,pp=st+rand()%(dr-st+1);
schimb(v[dr],v[pp]);
piv=v[dr];
for(int i = st ; i < dr ; ++i)
if(v[i] < piv)
schimb(v[i],v[poz++]);
schimb(v[poz],v[dr]);
return poz;
}
void sort(int st, int dr)
{
if(st >= dr)
return ;
int p = partitie(st,dr);
sort(st,p-1);
sort(p+1,dr);
}
int main()
{
//freopen("algsort.in","r",stdin);
//freopen("algsort.out","w",stdout);
ifstream in("algsort.in");
ofstream out("algsort.out");
//scanf("%d",&n);
in>>n;
for(int i=1;i<=n;i++)
//scanf("%d",&v[i]);
in>>v[i];
sort(1,n);
for(int i = 1;i<=n;i++)
//printf("%d ",v[i]);
out<<v[i]<<" ";
return 0;
}