Cod sursa(job #1824184)

Utilizator teo.cons98Constantin Teodor-Claudiu teo.cons98 Data 7 decembrie 2016 15:04:45
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int v[500001],n,e;

void citire()
{
    fin>>n;
    for(int i  = 0; i < n; ++i)
    {
        fin>>v[i];
    }
}

void schimba(int p, int u)
{
    int k;
    k = v[p];
    v[p] = v[u];
    v[u] = k;
}

void quickSort(int prim, int ult)
{
    if(prim < ult)
    {
        int pivot = v[(prim + ult) / 2];
        int p = prim, u = ult, f;
        while(p <= u)
        {
            while(p < ult and v[p] < pivot) ++p;
            while(u > prim and v[u] > pivot) --u;
            if(p <= u)
            {
                schimba(p,u);
                ++p;
                --u;
            }

        }
        if(prim < u)quickSort(prim, u);
        if(p < ult)quickSort(p, ult);
    }
}

int main()
{
    citire();
    quickSort(0,n - 1);
    for(int i = 0; i < n; ++i)
    {
        fout<<v[i]<<" ";
    }
}