Pagini recente » Cod sursa (job #1688663) | Cod sursa (job #610334) | Cod sursa (job #3214379) | Cod sursa (job #2749734) | Cod sursa (job #1016034)
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
void swap (int *v, int i1, int i2)
{
int aux = v[i1];
v[i1] = v[i2];
v[i2] = aux;
}
void quickSort (int *v, int left, int right)
{
if (right - left <= 1)
return;
// Set seed
srand(time(NULL));
// Select a idx between left and right
int pivot = rand() % (right - left) + left;
int cpLeft = left;
int cpRight = right;
while (cpLeft <= cpRight)
{
while (v[cpLeft] < v[pivot])
++cpLeft;
while (v[cpRight] > v[pivot])
--cpRight;
if (cpLeft <= cpRight)
{
swap(v, cpLeft, cpRight);
++cpLeft;
--cpRight;
}
}
if (left < cpRight)
quickSort(v, left, cpRight);
if (cpLeft < right)
quickSort(v, cpLeft, right);
}
int main ()
{
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n; cin >> n;
int v[500000];
for (int i = 0; i < n; ++i)
cin >> v[i];
quickSort(v, 0, n - 1);
for (int i = 0; i < n; ++i)
cout << v[i] << " ";
cin.close();
cout.close();
return 0;
}