Cod sursa(job #3173768)

Utilizator andreifilimonPopescu Filimon Andrei Cosmin andreifilimon Data 23 noiembrie 2023 17:56:11
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
//V2 - QUICKSORT

#include <fstream>

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

#define MAXN 500000

int v[MAXN+1];

void qsort(int v[], int pozb, int poze)
{
    int pivot, st, dr;
    pivot=v[pozb+rand()%(poze-pozb+1)];
    st=pozb;
    dr=poze;

    while(v[st]<pivot)
        st++;

    while(v[dr]>pivot)
        dr--;

    while(st<dr)
    {
        swap(v[st], v[dr]);

        do
        {
            st++;
        }
        while(v[st]<pivot);

        do
        {
            dr--;
        }
        while(v[dr]>pivot);
    }

    if(pozb<dr)
        qsort(v, pozb, dr);

    if(dr+1<poze)
        qsort(v, dr+1, poze);
}

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