Cod sursa(job #2610803)

Utilizator Zamfirescuste2Zamfirescu Stefan Zamfirescuste2 Data 5 mai 2020 18:01:02
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>

using namespace std;

int partitie ( int a[], int start, int end ){
    int poz_pivot = start + rand() % (end - start); // luam pivot random si il mutam pe ultima pozitie
    swap(a[poz_pivot],a[end]);          // in practica merge mai bine cu pivot random decat cu mediana din 3 sau 5
    int pivot = a[end];
    int index = start;
    int t;
    for (int i = start; i < end; i++ ){
        if( a[i] <= pivot ){
            t = a[i];
            a[i] = a[index];
            a[index] = t;
            index ++;
        }
    }
    t = a[end];
    a[end] = a[index];
    a[index] = t;
    return index;
}
void QuickSort(int v[],int start, int end ){
    if ( start < end )
    {
        int mij = partitie(v,start,end);
        QuickSort(v,start,mij - 1);
        QuickSort(v, mij+ 1, end);
    }
}
int main() {
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    int n;
    int array[500001];
    f >> n;
    for (int i = 0; i < n; ++i)
        f >> array[i];
    QuickSort(array,0,n - 1);
    for (int i = 0; i < n; ++i)
        g << array[i] << " ";
    g << "\n";
    return 0;
}