Cod sursa(job #2514708)

Utilizator ionuttiplea2001Tiplea Ionut ionuttiplea2001 Data 26 decembrie 2019 17:39:39
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#define Nmax 500000
using namespace std;
ifstream fi("algsort.in");
ofstream fo("algsort.out");
unsigned int v[Nmax+1];

int partitie(int left,int right,int piv)
{
    while(left <= right)
    {
        while(v[left]  <piv)  left ++;
        while(v[right] >piv) right --;
        if(left <= right)
        {swap(v[left],v[right]);
        left ++;
        right --;
        }
    }
    return left;
}

void quicksort(int left,int right)
{
    if(left >= right) return;
    int piv = v[left + (right-left)/2];
    int index = partitie(left,right,piv);
    quicksort(left,index-1);
    quicksort(index,right);
}

int main()
{
    int n;
    fi >> n;
    for(int i = 0; i < n; i ++)
    {
        fi >> v[i];
    }
    quicksort(0,n-1);
    for(int i = 0; i < n; i ++)
    {
        fo << v[i]<< " " ;
    }
    fi.close();
    fo.close();
    return 0;
}