Cod sursa(job #2307708)

Utilizator mihailescu_eduardMihailescu Eduard-Florin mihailescu_eduard Data 25 decembrie 2018 15:09:27
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <fstream>
#include <random>
#include <time.h>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

static const int NMAX = 5e5+5;
int n;
int v[NMAX];

int part(int arr[], int low, int high)
{
    int pivot = arr[high];
    int i = low -1;

    for(int j = low; j < high; ++j)
    {
        if(arr[j] <= pivot)
        {
            i++;
            swap(arr[i], arr[j]);
        }
    }
    swap(arr[high], arr[i+1]);
    return i+1;
}

int r_part(int arr[], int low, int high)
{
    srand(time(NULL));
    int random = rand() % (high - low + 1) + low;
    swap(arr[random],arr[high]);
    return part(arr,low,high);
}

void Quicksort(int arr[], int low, int high)
{

    if(low < high)
    {
        int pi = r_part(arr,low,high);
        Quicksort(arr,low, pi -1);
        Quicksort(arr, pi+1, high);
    }
}



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

void PrintOutput()
{
    for(int i =1; i<= n;++i)
        fout << v[i] << " ";
}
int main()
{
    ReadInput();
    Quicksort(v,1,n);
    PrintOutput();
    return 0;

}