Pagini recente » Cod sursa (job #698777) | Cod sursa (job #460804) | Cod sursa (job #1404397) | Cod sursa (job #2396693) | Cod sursa (job #1238756)
// Include
#include <fstream>
#include <algorithm>
#include <cstdlib>
using namespace std;
// Constante
const int sz = 500001;
// Functii
void quickSort(int left, int right);
// Variabile
ifstream in("algsort.in");
ofstream out("algsort.out");
int num;
int values[sz];
// Main
int main()
{
srand(7712);
in >> num;
for(int i=1 ; i<=num ; ++i)
in >> values[i];
quickSort(1, num);
for(int i=1 ; i<=num ; ++i)
out << values[i] << ' ';
out << '\n';
in.close();
out.close();
return 0;
}
void quickSort(int left, int right)
{
int currentLeft = left;
int currentRight = right;
int point = values[rand()%(right-left+1) + left];
while(currentLeft <= currentRight)
{
while(values[currentLeft] < point)
++currentLeft;
while(point < values[currentRight])
--currentRight;
if(currentLeft <= currentRight)
swap(values[currentLeft++], values[currentRight--]);
}
if(left < currentRight)
quickSort(left, currentRight);
if(currentLeft < right)
quickSort(currentLeft, right);
}