Pagini recente » Cod sursa (job #1163151) | Cod sursa (job #735429) | Cod sursa (job #438693) | Cod sursa (job #176829) | Cod sursa (job #2064057)
#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[500010];
int partition (int in, int sf)
{
int pos = in;
int ind = rand()%(sf-in)+in+1;
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);
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] << " ";
}