Pagini recente » Cod sursa (job #2919582) | Cod sursa (job #1616311) | Cod sursa (job #2977458) | Cod sursa (job #138781) | Cod sursa (job #2175801)
#include <fstream>
#include <vector>
#include <algorithm>
// define STD_SORT
#define QUICK_SORT
// #define MERGE_SORT
std::ifstream f("algsort.in");
std::ofstream g("algsort.out");
int N, x;
std::vector<int> v;
void Read()
{
f >> N;
v.reserve(N);
for (int i = 1; i <= N; ++i) {
f >> x;
v.emplace_back(x);
}
}
void Divide(int lo, int hi, int& i, int& j)
{
int piv = lo + (hi - lo) / 2;
i = lo, j = hi;
while (i < j) {
while (v[i] < v[piv])
++i;
while (v[j] > v[piv])
--j;
if (i < j) {
std::swap(v[i], v[j]);
++i, --j;
}
}
}
void QuickSort(int lo, int hi)
{
if (lo < hi) {
int i, j;
Divide(lo, hi, i, j);
QuickSort(lo, i - 1);
QuickSort(j + 1, hi);
}
}
int main(int argc, char * argv[])
{
Read();
#ifdef STD_SORT
std::sort(v.begin(), v.end());
#endif
#ifdef QUICK_SORT
QuickSort(0, v.size() - 1);
#endif
for (int i = 0; i < v.size(); ++i) {
g << v[i] << ' ';
}
return 0;
}