Cod sursa(job #1644008)

Utilizator larecursividadLa Recursividad larecursividad Data 9 martie 2016 21:08:13
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#define InFile  "algsort.in"
#define OutFile "algsort.out"
#define MAX 500001

using namespace std;

ifstream fin  (InFile);
ofstream fout (OutFile);

void solve (unsigned int v[], unsigned int left, unsigned int right);

unsigned int N;

unsigned int v[MAX];
unsigned int i;

int main ()
{
    fin >> N;
    for (i=1; i<=N; i++)
        fin >> v[i];
    solve (v,1,N);
    for (i=1; i<=N; i++)
        fout << v[i] << ' ';
    return 0;
}

void solve (unsigned int v[], unsigned int left, unsigned int right)
{
    int tmp, pivot;
    int i, j;
    i = left;
    j = right;
    pivot = v[(left+right)/2];
    while (i <= j)
    {
        while (v[i] < pivot)
            i++;
        while (v[j] > pivot)
            j--;
        if (i <= j)
        {
            tmp = v[i];
            v[i] = v[j];
            v[j] = tmp;
            i++;
            j--;
        }
    }
    if (left < j)
        solve(v,left,j);
    if (right > i)
        solve(v,i,right);
}