Cod sursa(job #3153675)

Utilizator BOSSSTEFANPetrescu Ioan Stefan BOSSSTEFAN Data 30 septembrie 2023 16:32:53
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <ctime>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int v[500001],maxi;
int part(int v[], int st, int dr)
{
    int i,j,mij=v[st+rand()%(dr-st+1)];
    for(i=st-1,j=dr+1;;)
    {
        i++;
        j--;
        while(v[i]<mij)
            i++;
        while(v[j]>mij)
            j--;
        if(i>=j)
            return j;
        swap(v[i],v[j]);
    }
}
void qsort(int st, int dr)
{
    if(st<dr)
    {
        int p=part(v,st,dr);
        qsort(st,p);
        qsort(p+1,dr);
    }
}
int main()
{
    srand(time(0));
    int n,i;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>v[i];
        maxi=max(maxi,v[i]);
    }
    qsort(1,n);
    for(i=1;i<=n;i++)
        cout<<v[i]<<" ";
    return 0;
}