Cod sursa(job #2111269)

Utilizator dey44andIoja Andrei-Iosif dey44and Data 21 ianuarie 2018 19:46:46
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#define intrare "algsort.in"
#define iesire "algsort.out"

using namespace std;

ifstream in(intrare);
ofstream out(iesire);

int n, arr[600005];

void Read()
{
    in >> n;
    for(int i = 1; i <= n; i++)
        in >> arr[i];
}

int Divide(int p, int q)
{
    int stanga = p, dreapta = q, pivot = arr[p];
    while(stanga < dreapta)
    {
        while(stanga < dreapta && arr[dreapta] >= pivot) dreapta--;
        arr[stanga] = arr[dreapta];
        while(stanga < dreapta && arr[stanga] <= pivot) stanga++;
        arr[dreapta] = arr[stanga];
    }
    arr[stanga] = pivot;
    return stanga;
}

void Quick_Sort(int p, int q)
{
    int m = Divide(p, q);
    if(m - 1 > p) Quick_Sort(p, m - 1);
    if(m + 1 < q) Quick_Sort(m + 1, q);
}

void Afisare()
{
    for(int i = 1; i <= n; i++)
        out << arr[i] << " ";
}

int main()
{
    Read();
    Quick_Sort(1, n);
    Afisare();
}