Cod sursa(job #856697)

Utilizator TripluYOlteanu Costin TripluY Data 16 ianuarie 2013 20:53:48
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
using namespace std;

int *vector_citit;

void qsort(int start,int sfarsit)
{
    int dreapta = start, stanga = sfarsit, pivot = vector_citit[(start+sfarsit)>>1], swapper;
    while(dreapta <= stanga)
    {
        if(vector_citit[dreapta]<pivot)
        {
            dreapta++;
            continue;
        }
        if(vector_citit[stanga]>pivot)
        {
            stanga--;
            continue;
        }
        swapper = vector_citit[dreapta];
        vector_citit[dreapta] = vector_citit[stanga];
        vector_citit[stanga] = swapper;
        dreapta++,stanga--;
    }

    if(start<stanga)
        qsort(start,stanga);

    if(dreapta<sfarsit)
        qsort(dreapta,sfarsit);
}

int main()
{
    int n,i;

    ifstream f("algsort.in");
    f >> n;

    vector_citit = new int[n];
    --n;
    for(i=0;i<=n;++i)
        f >> vector_citit[i];
    f.close();

    qsort(0,n);

    ofstream g("algsort.out");
    for(i=0;i<=n;++i)
        g << vector_citit[i] << " ";
    g.close();
    return 0;
}