Pagini recente » Cod sursa (job #210433) | Cod sursa (job #879558) | Cod sursa (job #1340085) | Cod sursa (job #1326126) | Cod sursa (job #2064034)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, i, j, nr, aux, v[500000];
int partition (int in, int sf)
{
int pos = in;
int ind = rand()%(sf-in)+in+1;
aux = v[ind]; v[ind] = v[in]; v[in] = aux;
for (int i = in+1; i <= sf; i++)
if (v[i] <= v[pos])
{
aux = v[pos+1]; v[pos+1] = v[i]; v[i] = aux;
aux = v[pos]; v[pos] = v[pos+1]; v[pos+1] = aux;
pos++;
}
return pos;
}
void quicksort (int in, int sf)
{
if (sf > in)
{
int ind = partition(in, sf);
if (in < ind-1) quicksort (in, ind-1);
if (sf > ind+1) quicksort (ind+1, sf);
}
}
int main () {
fin >> n;
for (i = 1; i <= n; i++)
fin >> v[i];
srand (unsigned (time(0)));
quicksort(1, n);
for (i = 1; i <= n; i++)
fout << v[i] << " ";
}