Pagini recente » Cod sursa (job #2690896) | Cod sursa (job #1436886) | Cod sursa (job #961210) | Cod sursa (job #2539246) | Cod sursa (job #1016027)
#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)
{
// 1 element is sorted
if (left == right)
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;
swap(v, cpLeft, cpRight);
}
quickSort(v, left, pivot);
quickSort(v, pivot + 1, 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;
}