Pagini recente » Cod sursa (job #993354) | Cod sursa (job #2647798) | Cod sursa (job #2859616) | Cod sursa (job #2929828) | Cod sursa (job #738620)
Cod sursa(job #738620)
#include<cstdio>
#include<algorithm>
#define lmax 500050
#define in "r"
#define out "w"
using namespace std;
FILE *f=fopen("algsort.in",in),*g=fopen("algsort.out",out);
int n,i,a[lmax];
int partitie(int ,int );
void schimbint(int &a,int &b)
{
int aux;
aux=a;
a=b;
b=aux;
}
int partitie(int s,int d)
{
int pivot=a[s+rand()%(d-s)],i,j;
i=s;
for(j=s+1; j<=d; j++)
if(a[j]<=pivot)
{
i++;
schimbint(a[i],a[j]);
}
schimbint(a[s],a[i]);
return i;
}
void qs(int s,int d)
{
int m;
if(s<d)
{
m=partitie(s,d);
qs(s,m-1);
qs(m+1,d);
}
}
void show_vector()
{
int i;
for(i=1; i<=n; i++)
fprintf(g,"%d ",a[i]);
}
void read()
{
int i;
fscanf (f,"%d",&n);
for(i=1; i<=n; i++)
fscanf(f,"%d",&a[i]);
}
int main()
{
read();
qs(1,n);
show_vector();
fclose(f);
fclose(g);
return 0;
}