Cod sursa(job #2637241)

Utilizator BAlexandruBorgovan Alexandru BAlexandru Data 21 iulie 2020 23:13:06
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int n;
int v[500001];

int Partition(int arr[], int left, int right)
{
    int pivot = arr[(left + right) / 2];
    int i = left - 1;
    int j = right + 1;

    while (true)
    {
        do
        {
            i++;
        }while (arr[i] < pivot);

        do
        {
            j--;
        }while (arr[j] > pivot);

        if (i >= j)
            return j;

        swap(arr[i], arr[j]);
    }
}

void QuickSort(int arr[], int left, int right)
{
    if (left < right)
    {
        int pi = Partition(arr, left, right);
        QuickSort(arr, left, pi);
        QuickSort(arr, pi + 1, right);
    }
}

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

    QuickSort(v, 1, n);

    for (int i=1; i<=n; i++)
        g << v[i] << " ";

    return 0;
}