Cod sursa(job #2183455)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 23 martie 2018 10:30:40
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <ctime>
#include <stdlib.h>

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, v[500001], i,p;

int rez(int st, int dr)
{
    int dst=0, ddr=-1;
    while(st!=dr)
    {
        if(v[st]>v[dr])
        {
            swap(v[st], v[dr]);
            swap(dst, ddr);
            ddr=-ddr;dst=-dst;
        }
        st+=dst;
        dr+=ddr;
    }
    return st;
}

void quicksort(int st, int dr)
{
    int p;
    if(st<dr)
    {
        p=rez(st, dr);
        quicksort(st, p-1);
        quicksort(p+1, dr);
    }
}

int main()
{
    srand(time(0));
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];
    for(i=n;i>1;i--)
    {
        p=1+1LL*(rand()*rand())%(i-1);
        swap(v[i], v[p]);
    }
    quicksort(1, n);
    for(i=1;i<=n;i++)
        fout<<v[i]<<" ";
    fin.close();
    fout.close();
    return 0;
}