Cod sursa(job #3254686)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 8 noiembrie 2024 15:19:37
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <ctime>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int v[100001],n,i;
int pivot (int st,int dr)
{
    ///i+1,j+0
    ///i+0,j-1
    int poz=rand ()%(dr-st+1)+st;
    swap (v[st],v[poz]);
    int ok=0;
    while (st<dr)
    {
        if (v[st]>v[dr])
        {
            swap (v[st],v[dr]);
            ok=1-ok;
        }
        st+=ok;
        dr-=(1-ok);
    }
    return st;
}
void quick_sort (int st,int dr)
{
    if (st<dr)
    {
        int poz=pivot (st,dr);
        quick_sort (st,poz);
        quick_sort (poz+1,dr);
    }
}
int main()
{
    srand (time (0));
    fin>>n;
    for (i=1; i<=n; i++)
        fin>>v[i];
    quick_sort (1,n);
    for (i=1; i<=n; i++)
        fout<<v[i]<<" ";
    return 0;
}