Pagini recente » Cod sursa (job #1504945) | Cod sursa (job #1322583) | Cod sursa (job #1009050) | Cod sursa (job #463232) | Cod sursa (job #2064372)
#include <cstdio>
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
int n, i, j, nr, aux, v[500010];
int partition (int in, int sf)
{
int pos = in;
int ind = rand()%(sf-in+1)+in;
aux = v[sf]; v[sf] = v[ind]; v[ind] = aux;
for (int i = in; i < sf; i++)
if (v[i] <= v[sf])
{
aux = v[pos]; v[pos] = v[i]; v[i] = aux;
pos++;
}
aux = v[pos]; v[pos] = v[sf]; v[sf] = aux;
return pos;
}
void quicksort (int in, int sf)
{
if (sf > in)
{
int ind = partition(in, sf);
quicksort (in, ind-1);
quicksort (ind+1, sf);
}
}
int main () {
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &v[i]);
srand (unsigned (time(0)));
quicksort(1, n);
for (i = 1; i <= n; i++)
printf("%d ", v[i]);
}