Cod sursa(job #3038523)

Utilizator DomnulMilandruMilandru Nicon-David DomnulMilandru Data 27 martie 2023 14:46:29
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb

#include <fstream>
#include <time.h>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n;
int a[500001];
int partitie(int st,int dr)
{
    int pivot=a[st+rand()%(dr-st+1)];
    int i=st,j=dr;
    while(1)
    {
        while(a[i]<pivot)
          i++;
        while(a[j]>pivot)
          j--;
        if(i>=j)
           return j;
        swap(a[i],a[j]);
        i++;
        j--;
    }
}
void quicksort(int st,int dr)
{
    if(st>=dr)
      return;
    int poz=partitie(st,dr);
    quicksort(st,poz);
    quicksort(poz+1,dr);
}
int main()
{
    cin>>n;
    srand(time(NULL));
    for(int i=0;i<n;i++)
      cin>>a[i];
    quicksort(0,n-1);
    for(int i=0;i<n;i++)
       cout<<a[i]<<" ";
    return 0;
}