Pagini recente » Cod sursa (job #1113993) | Cod sursa (job #2568146) | Cod sursa (job #2035328) | Cod sursa (job #2054274) | Cod sursa (job #1241183)
#include <fstream>
#include <iterator>
#include <random>
#include <utility>
#include <vector>
using namespace std;
struct Generator {
mt19937 gen;
Generator() : gen() {}
int operator()(const int& a, const int& b) {
return uniform_int_distribution<int>(a, b)(gen);
}
} uniform;
inline int partition(
const int& left,
const int& right,
std::vector<int>& V) {
// random pivot;
//swap(V[right], V[ uniform(left, right) ]);
int pivot = left;
for (int i = left; i < right; ++i)
if (V[i] < V[right])
swap(V[i], V[pivot++]);
swap(V[right], V[pivot]);
return pivot;
}
void quicksort(
const int& left,
const int& right,
std::vector<int>& V) {
if (left < right) {
int pivot = partition(left, right, V);
quicksort(left, pivot - 1, V);
quicksort(pivot + 1, right, V);
}
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n; fin >> n;
vector<int> V;
copy(istream_iterator<int>(fin), istream_iterator<int>(), back_inserter(V));
quicksort(0, V.size() - 1, V);
copy(V.begin(), V.end(), ostream_iterator<int>(fout, " "));
fout << endl;
return 0;
}