Pagini recente » Cod sursa (job #1690952) | Cod sursa (job #1315614) | Cod sursa (job #115424) | Cod sursa (job #1134237) | Cod sursa (job #2351574)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int MAX = 100005;
int N;
int a[MAX];
void ReadArray();
void Sort(int left, int right);
void WriteArray();
int main()
{
ReadArray();
Sort(1, N);
WriteArray();
fin.close();
fout.close();
return 0;
}
void ReadArray()
{
fin >> N;
for (int i = 1; i <= N; ++i)
fin >> a[i];
}
void Sort(int left, int right)
{
int pivot = a[(left + right) / 2];
int i{left}, j{right};
do
{
while (i <= j && a[i] < pivot) ++i;
while (i <= j && a[j] > pivot) --j;
if (i <= j)
{
swap(a[i], a[j]);
++i; --j;
}
}while (i <= j);
if (left < j) Sort(left, j);
if (i < right) Sort(i, right);
}
void WriteArray()
{
// fout << N << '\n';
for (int i = 1; i <= N; ++i)
fout << a[i] << ' ';
}