Pagini recente » Cod sursa (job #160563) | Cod sursa (job #706037) | Cod sursa (job #858697) | Cod sursa (job #1922566) | Cod sursa (job #2864869)
#include <fstream>
#include <algorithm>
#include <random>
int N;
int v[500001];
std::random_device rd;
std::default_random_engine eng(rd());
int partition(int left, int right) {
// dont include right element ?
// std::uniform_int_distribution<int> dist(left, right - 1);
int pivot = v[left];
int i = left - 1, j = right + 1;
while (true) {
do
++i;
while (v[i] < pivot);
do
--j;
while (v[j] > pivot);
if (i >= j)
break;
std::swap(v[i], v[j]);
}
return j;
}
void quicksort(int left, int right) {
if (left < right) {
int i = partition(left, right);
quicksort(left, i);
quicksort(i + 1, right);
}
}
int main() {
std::ifstream in("algsort.in");
in >> N;
for (int i = 0; i < N; ++i)
in >> v[i];
quicksort(0, N - 1);
std::ofstream out("algsort.out");
for (int i = 0; i < N; ++i)
out << v[i] << ' ';
}