Pagini recente » Cod sursa (job #2577661) | Cod sursa (job #675143) | Cod sursa (job #1088657) | Cod sursa (job #1088660) | Cod sursa (job #2175902)
#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 QuickSort(int lo, int hi)
{
int i = lo, j = hi, piv = v[lo + (hi - lo) / 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 > lo) {
QuickSort(lo, j);
}
if (i < hi) {
QuickSort(i, 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;
}