Pagini recente » Cod sursa (job #755802) | Cod sursa (job #1506534) | Cod sursa (job #1687386) | Cod sursa (job #223373) | Cod sursa (job #738603)
Cod sursa(job #738603)
#include<cstdlib>
#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];
void schimbint(int &a,int &b)
{
int aux;
aux=a;
a=b;
b=aux;
}
void divizeaza(int s,int d,int &m)
{
int i=s,j=d,pi=0,pj=1;
while(i<j)
{
if(a[i]>a[j])
schimbint(pi,pj),schimbint(a[i],a[j]);
i+=pi;
j-=pj;
}
m=i;
}
void qs(int s,int d)
{
int m;
if(s<d)
{
divizeaza(s,d,m);
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;
}