Cod sursa(job #3030758)

Utilizator fresh.mintyAlexandru Andrei fresh.minty Data 17 martie 2023 20:54:18
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>
#include <iostream>

#include <algorithm>

using namespace std;
ifstream f("algsort.in");
ofstream f2("algsort.out");
long aux[500001],v[500001];
int ordonare(unsigned int left, unsigned int right, unsigned int pos)
{
    unsigned int j = 0;
    for (unsigned int i = left; i < right; i++)
        if (v[i] <= v[pos] && i != pos)
        {
            aux[j] = v[i];
            j++;
        }

    aux[j] = v[pos];
    unsigned int poz_pivot2 = j + left;
    j++;

    for (unsigned int i = left; i < right; i++)
        if (v[i] > v[pos])
        {
            aux[j] = v[i];
            j++;
        }

    for (unsigned int i = left; i < right; i++)
        v[i] = aux[i - left];

    return poz_pivot2;
}

void quicksort(unsigned int left, unsigned int right)
{
    if (left < right)
    {
        unsigned int pos = left + rand() % (right - left);
        pos = ordonare(left, right, pos);

        quicksort(left, pos);
        quicksort(pos + 1, right);

    }
}



int main()
{
    int i,n;
    f>>n;
    for(i=0;i<n;i++)
    f>>v[i];
    quicksort(0,n);
    for(i=0;i<n;i++)
    f2<<v[i]<<" ";


    f.close();
    f2.close();
    return 0;
}