Pagini recente » Cod sursa (job #1298161) | Cod sursa (job #1891184) | Cod sursa (job #1157055) | Cod sursa (job #2922229) | Cod sursa (job #2611151)
#include <cstddef>
#include <cstdlib>
#include <fstream>
#include <iterator>
#include <utility>
#include <vector>
auto read_input() -> std::vector<int>
{
std::ifstream f{ "algsort.in" };
std::vector<int> result{};
int count{ 0 };
f >> count;
result.reserve(static_cast<std::size_t>(count));
for(int i = 0; i < count; ++i) {
int num{ 0 };
f >> num;
result.push_back(num);
}
return result;
}
auto quicksort(std::vector<int>& v,
std::size_t const start,
std::size_t const end) -> void
{
auto i = start;
auto j = end;
auto piv = v[start + (end - start) / 2];
while(i <= j) {
while(v[i] < piv) {
++i;
}
while(v[j] > piv) {
--j;
}
if(i <= j) {
std::swap(v[i], v[j]);
++i;
--j;
}
}
if(j > start) {
quicksort(v, start, j);
}
if(end > i) {
quicksort(v, i, end);
}
}
auto main() noexcept -> int
{
auto input = read_input();
quicksort(input, 0, input.size() - 1);
std::ofstream g{ "algsort.out" };
for(int const elem : input) {
g << elem << ' ';
}
return EXIT_SUCCESS;
}