Cod sursa(job #1019254)

Utilizator sateanuAldea Andrei sateanu Data 30 octombrie 2013 21:00:20
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <cstdlib>

using namespace std;

int v[500005];

int choosePivot(int st, int dr)
{
    int i,j,piv;
    i=st-1;
    j=dr+1;
    piv=v[st+rand()%(dr-st+1)];


    while(true){

        do
            {
            ++i;
        }while(v[i]<piv);

        do
        {
            --j;
        }while(v[j]>piv);
        if(i<j)
            {

                int aux=v[i];
                v[i]=v[j];
                v[j]=aux;
            }
        else
            return j;
    }

    return 0;
}

void quicksort(int st,int dr)
{
    if(st<dr)
    {
        int pivot=choosePivot(st,dr);

        quicksort(st,pivot);
        quicksort(pivot+1,dr);
    }
}



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

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

    quicksort(1,n);

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

    f.close();
    g.close();

    return 0;
}