Pagini recente » Cod sursa (job #99786) | Cod sursa (job #3277318) | Cod sursa (job #2545741) | Cod sursa (job #2194735) | Cod sursa (job #2669248)
#include <iostream>
#include <fstream>
#include <vector>
#include <stdlib.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
inline int randBetween(int lb, int ub)
{
return lb + rand() % (ub - lb + 1);
}
inline int choosePivot(int lb, int ub)
{
return (lb + ub) / 2;
}
inline int chooseRandomPivot(int lb, int ub)
{
return randBetween(lb, ub);
}
void quickSort(vector<int> &v, int lb, int ub)
{
if(lb >= ub)
return;
int piv = choosePivot(lb, ub);
swap(v[piv], v[ub]);
int left = lb;
int right = ub - 1;
while(left <= right)
{
while(v[left] < v[ub])
left++;
while(v[right] >= v[ub] && right >= left)
right--;
if(left < right)
swap(v[left], v[right]);
}
swap(v[left], v[ub]);
piv = left;
quickSort(v, lb, piv - 1);
quickSort(v, piv + 1, ub);
}
int main()
{
// srand(time(NULL));
int n;
fin >> n;
vector<int> v(n);
for(int &x : v)
fin >> x;
quickSort(v, 0, v.size() - 1);
for(int x : v)
fout << x << ' ';
return 0;
}