Cod sursa(job #3129076)

Utilizator RK13Barbu Eduard RK13 Data 12 mai 2023 15:15:51
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
#include <stdlib.h>
#include <time.h>
using namespace std;

//implementarea quicksort--->derivata de la merge sort--->un pivot random

ifstream f("algsort.in");
ofstream g("algsort.out");

int n,v[500001];

int partitie_random(int st, int dr)
{int i=st,j=dr,p=0;
int nr=rand()%(dr-st+1)+st;
    swap(v[st],v[nr]);
    while (i<j)
    {
        if (v[i]>v[j])
        {
            swap(v[i],v[j]);
            p=1-p;
        }
        i+=p;
        j-=1-p;
    }
    return i;
}

void mergesort(int st, int dr)
{
    if (st>=dr)
        return;
    int pivot=partitie_random(st,dr);
    mergesort(st,pivot-1);
    mergesort(pivot+1,dr);
}

int main()
{srand(time(NULL));
    int i;
    f>>n;
    for (i=0;i<n;i++)
        f>>v[i];
    mergesort(0,n-1);
    for (i=0;i<n;i++)
        g<<v[i]<<' ';
}