Cod sursa(job #2294848)

Utilizator lucianistratiIstrati Lucian lucianistrati Data 2 decembrie 2018 21:12:39
Problema Sortare prin comparare Scor 0
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
int v[500001];
int partitie(int v[],int st, int dr)
{
    srand(time(NULL));
    int aux1=st+rand()%(dr-st);
    int aux2=st+rand()%(dr-st);
    int aux3=st+rand()%(dr-st);
    int aux=(aux1+aux2+aux3)/3;
    swap(v[aux],v[dr]);
    int pivot=v[dr],j,i=st-1;
    for(j=st;j<=dr-1;j++)
    {
        if(v[j]<=pivot)
        {
            i++;
            swap(v[i],v[j]);
        }
    }
    swap(v[i+1],v[dr]);
    return (i+1);
}
void QuickSort(int v[],int st, int dr)
{
	if(st<dr)
    {
	int pivot=partitie(v,st,dr);
	QuickSort(v,st,pivot);
    QuickSort(v,pivot+1, dr);
    }
}
int main()
{
    int N,i;
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");
    fin>>N;
    for(i=0;i<=N-1;i++)
    {
        fin>>v[i];
    }
    QuickSort(v,0,N-1);
    for(i=0;i<=N-1;i++)
    {
        fout<<v[i]<<" ";
    }
    return 0;
}