Cod sursa(job #1775453)

Utilizator meriniucrMeriniuc Razvan- Dumitru meriniucr Data 10 octombrie 2016 13:46:13
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>
#include <iostream>

int n;
int arr[500000];

void
f(int beg,
  int end)
{
    int i;
    int j;

    if (beg >= end)
    {
        return;
    }

    if (beg == end - 1)
    {
        if (arr[beg] > arr[end])
        {
            int temp;

            temp = arr[beg];
            arr[beg] = arr[end];
            arr[end] = temp;
        }

        return;
    }

    i = beg + 1;
    j = end;

    while (i <= j)
    {
        while ( (i <= j) and
                (arr[i] <= arr[beg]) )
        {
            ++i;
        }

        while ( (i <= j) and
                (arr[j] >= arr[beg]) )
        {
            --j;
        }

        if (i <= j)
        {
            int temp;

            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }

        ++i;
        --j;
    }

    int temp;

    temp = arr[beg];
    arr[beg] = arr[j];
    arr[j] = temp;

    f(beg, j - 1);
    f(i, end);
}

int main()
{
    std::ifstream mama("algsort.in");
    std::ofstream tata("algsort.out");

    mama >> n;

    for (int i = 0; i < n; ++i)
    {
        mama >> arr[i];
    }

    f(0, n - 1);

    for (int i = 0; i < n; ++i)
    {
        tata << arr[i] << ' ';
    }

    return 0;
}