Cod sursa(job #2238883)

Utilizator cristinaandrei10Andrei Cristina cristinaandrei10 Data 8 septembrie 2018 11:09:18
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int N = 500001;
int n,v[N];
void interschimb(int &x, int &y)
{
    int aux;
    aux=x;
    x=y;
    y=aux;
}
void citire()
{
    srand(time(0));
    f>>n;
    for(int i=1; i<=n; i++)
        f>>v[i];
}
void afisare()
{
    for(int i=1; i<=n; i++)
        g<<v[i]<<' ';
}
void quickSort(int ST,int DR)
{
    if(ST>=DR)
        return;
    int pivot = v[ST+rand()%(DR-ST+1)];
    //int pivot=v[(ST+DR)/2];
    int st=ST,dr=DR;
    do
    {
        while(v[st]<pivot)
            st++;
        while(v[dr]>pivot)
            dr--;
        if(st<=dr)
        {
            interschimb(v[st],v[dr]);
            st++;
            dr--;
        }
    }
    while(st<=dr);
    if(ST<dr)
        quickSort(ST,dr);
    if(st<DR)
        quickSort(st,DR);
}
int main()
{
    citire();
    quickSort(1,n);
    afisare();
    return 0;
}