Pagini recente » Cod sursa (job #865043) | Cod sursa (job #2542645) | Cod sursa (job #392663) | Cod sursa (job #2098591) | Cod sursa (job #771787)
Cod sursa(job #771787)
#include<fstream>
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500001],n;
void quicksort(int xi, int xf)
{int b[100],r,d,j,yi,yf,eq;
d=xf-xi+1;
if(d>1)
{yi=xi-1; yf=xf+1; eq=0;
r=xi+rand()%d;
// g<<"Length: "<<d<<" Random: "<<r<<" "<<" xi: "<<xi<<" xf: "<<xf<<" ";
for(j=xi; j<=xf; j++)
{if(a[j]<a[r])
{yi++; b[yi]=a[j];}
if(a[j]>a[r])
{yf--; b[yf]=a[j];}
if(a[j]==a[r])
eq++;
}
for(j=1; j<=eq; j++)
b[yi+eq]=a[r];
for(j=xi; j<=xf; j++)
a[j]=b[j];
// for(j=1; j<=n; j++)
// g<<a[j]<<" ";
// g<<" yi = "<<yi<<" yf = "<<yf<<" eq = "<<eq<<endl;
quicksort(xi,yi);
quicksort(yi+eq+1, xf); }
}
int main()
{int i;
f>>n;
for(i=1; i<=n; i++)
f>>a[i];
quicksort(1,n);
for(i=1; i<=n; i++)
g<<a[i]<<" ";
return 0;}