Pagini recente » Cod sursa (job #26839) | Cod sursa (job #2883168) | Cod sursa (job #3156695) | Cod sursa (job #1440571) | Cod sursa (job #1008693)
#include<iostream>
#include<cstdlib>
#include<fstream>
#include<ctime>
using namespace std;
int v[500000],n;
void quicksort(int f[],int left, int right)
{
int i=left, j=right, tmp, pivot,pivot1,pivot2,pivot3;
pivot1=f[rand()%right+left];
pivot2=f[rand()%right+left];
srand(time(NULL));
pivot3=f[rand()%right+left];
srand(time(NULL));
if((pivot1<=pivot2 && pivot2<=pivot3) || (pivot1>=pivot2 && pivot2 >= pivot3))
pivot=pivot2;
else
if((pivot2<=pivot1 && pivot1<=pivot3) || (pivot2>=pivot1 && pivot1 >= pivot3))
pivot=pivot1;
else
pivot=pivot3;
pivot=f[(left+right)/2];
while(i<=j)
{
while(f[i]<pivot)
i++;
while(f[j]>pivot)
j--;
if(i<=j)
{
tmp=f[i];
f[i]=f[j];
f[j]=tmp;
i++;
j--;
}
}
if(left<j)
quicksort(f,left,j);
if(i<right)
quicksort(f,i,right);
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int u;
f>>n;
for(u=1;u<=n;u++)
f>>v[u];
quicksort(v,1,n);
for(u=1;u<=n;u++)
g<<v[u]<<" ";
f.close();
g.close();
return 0;
}