Pagini recente » Cod sursa (job #2034301) | Cod sursa (job #1811879) | Cod sursa (job #1259280) | Cod sursa (job #1683077) | Cod sursa (job #2294848)
#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;
}