Cod sursa(job #1318957)

Utilizator GeorgianaMMirlogeanu Georgiana GeorgianaM Data 16 ianuarie 2015 15:17:07
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <cstdlib>


using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");


int n,i,j,stg,drt;
long a[500001];

int prg(int stg,int drt)
{
    int pivot=a[stg+rand()%(drt-stg+1)];
    while(stg<=drt)
    {
        while(a[stg]<pivot)
            stg++;
        while(a[drt]>pivot)
            drt--;
        if(stg<=drt)
        {
            swap(a[stg],a[drt]);
            stg++,drt--;
        }
    }
    return stg ;
}

void quick(int stg,int drt)
{
    if(stg<drt)
    {
        int k=prg(stg,drt);
        quick(stg,k-1);
        quick(k,drt);
    }
}

int main()
{   f>>n;
    for(i=1;i<=n;i++)
        f>>a[i];
    quick(1,n);
    for(i=1;i<=n;i++)
        g<<a[i]<<" ";
    f.close();
    g.close();
    return 0;
}