Pagini recente » Cod sursa (job #1285353) | Cod sursa (job #1489558) | Cod sursa (job #2860714) | Cod sursa (job #2133196) | Cod sursa (job #2083232)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int x[500002],n,i;
int part(int p, int u)
{
int piv = x[rand() % (u-p+1) + p];
while (p>=u){
while(x[p] < piv) p++;
while(x[u] > piv) u--;
swap(x[p++], x[u--]);
}
return p;}
int poz(int p,int u)
{int piv,aux,k, index;
piv=x[p];
index=rand() % (u-p+1) + p;
x[p]=x[index];
x[index]=piv;
piv=x[p];
while (p<u)
{ if (x[p]>x[u]) {aux=x[p];
x[p]=x[u];
x[u]=aux;
}
if (x[p]==piv)
u--;
else p++;
}
k=p;
return k;
}
void quick(int p,int u)
{int k;
if (p<u) {k=poz(p,u);
quick(p,k-1);
quick(k+1,u);}
}
int main()
{srand(time(0));
f>>n;
for(int i=1;i<=n;i++)
{
f>>x[i];
}
quick(1,n);
for(i=1;i<=n;i++)
g<<x[i]<<' ';
}