Cod sursa(job #2252753)

Utilizator dumbraveanbDumbravean Bogdan dumbraveanb Data 2 octombrie 2018 23:53:07
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int n;
int a[100001];

void quickSort(int st, int dr)
{
    if (st == dr)
        return;
        
    else
    {
        int mid = (st + dr) / 2;
        int pivot = a[mid];
        int i = st, j = dr;
        int aux;

        while (i <= j)
        {
            while (i <= dr && a[i] < pivot)
                ++i;
            while (j >= st && a[j] > pivot)
                --j;

            if (i <= j)
            {
                aux = a[i];
                a[i] = a[j];
                a[j] = aux;

                ++i;    --j;
            }
        } 
        
        if (st <= j)
            quickSort(st, j);
        if (i <= dr)
            quickSort(i, dr);
    }
}

int main()
{
    cin >> n;
    for (int i = 1; i <= n; ++i)
        cin >> a[i];

    quickSort(1, n);

    for (int i = 1; i <= n; ++i)
        cout << a[i] << ' ';
    return 0;
}