Cod sursa(job #2847733)

Utilizator Cyrex.1948Dumitrica Cezar Stefan Cyrex.1948 Data 11 februarie 2022 12:31:43
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream cin("algsort.in");
ofstream cout("algsort.out");

const int N = 5e5;

int v[N + 1];

int partitionare(int v[], int st, int dr)
{
    int pp = rand()%(dr - st + 1) + st;
    swap(v[pp], v[dr]);
    int p = st;
    for(int i = st; i < dr; i++)
    {
        if(v[i] <= v[dr])
        {
            swap(v[p++], v[i]);
        }
    }
    swap(v[p], v[dr]);
    return p;
}

void qs(int v[], int st, int dr)
{
    if(st >= dr)
    {
        return;
    }
    int p = partitionare(v, st, dr);
    qs(v, st, p - 1);
    qs(v, p + 1, dr);
}

int main()
{
    int n;
    cin >> n;
    for(int i = 0; i < n; i++)
    {
        cin >> v[i];
    }
    qs(v, 0, n - 1);
    for(int i = 0; i < n; i++)
    {
        cout << v[i] << " ";
    }
    return 0;
}