Cod sursa(job #2351574)

Utilizator borcanirobertBorcani Robert borcanirobert Data 22 februarie 2019 15:55:26
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#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] << ' ';
}