Cod sursa(job #2245347)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 25 septembrie 2018 09:38:38
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int N;
int v[500005];

void QuickSort(int left, int right)
{
    int st = left, dr = right, pivot = (left + right) / 2;

    do
    {
        while(st < right && v[st] < v[pivot])
            st++;

        while(dr > left && v[dr] > v[pivot])
            dr--;

        if(st <= dr)
        {
            swap(v[st], v[dr]);
            ++st, --dr;
        }
    }
    while(st <= dr);

    if(left < dr)
        QuickSort(left, dr);
    if(right > st)
        QuickSort(st, right);
}

int main()
{
    fin >> N;
    for(int i = 1; i <= N; i++)
        fin >> v[i];

    QuickSort(1, N);

    for(int i = 1; i <= N; i++)
        fout << v[i] << ' ';

    return 0;
}