Pagini recente » Cod sursa (job #772642) | Cod sursa (job #1658869) | Cod sursa (job #428082) | Cod sursa (job #2415814) | Cod sursa (job #2294864)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
int v[500001];
int pivotare(int v[],int st, int dr)
{
srand(time(NULL));
int aux,aux1,aux2,aux3;
aux1=st+rand()%(dr-st);
aux2=st+rand()%(dr-st);
aux3=st+rand()%(dr-st);
aux=(aux1+aux2+aux3)/3;
return aux;
}
void QuickSort(int v[],int st, int dr)
{
if(st<dr)
{
int i,j,pivot=pivotare(v,st,dr);
i=st;
j=dr;
while(i<=j)
{
while(v[i]<pivot)
{
i++;
}
while(v[j]>pivot)
{
j--;
}
if(i<=j)
{
swap(v[i],v[j]);
i++;
j--;
}
}
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;
}