Cod sursa(job #357780)

Utilizator petroMilut Petronela petro Data 20 octombrie 2009 18:23:24
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda CNRV #3 Marime 0.79 kb
#include<stdio.h>
#define M 5000010

FILE *f=fopen("algsort.in","r");
FILE *g=fopen("algsort.out","w");

long n,v[M];

long imparte(long i, long j)
{
	long p,q,x;
	p=i;
	q=j;
	x=v[i];
	
	while(p<=q)
	{
		while(p<q && x<=v[q])
			q--;
		
		v[p]=v[q];
		
		while(p<q && x>v[p])
			p++;
		
		v[q]=v[p];
	}
	
	v[p]=x;
	return p;
}

void quick(long i, long j)
{
	if(i<=j) {long m;
	          m=imparte(i,j);
              if(i<m-1) quick(i,m-1);
              if(j>m+1) quick(m+1,j);
	           }
}

void afis()
{
	long i;
	
	for(i=1;i<=n;i++)
		fprintf(g,"%ld ",v[i]);
	
	fprintf(g,"\n");
}

int main()
{
	long i;
	
	fscanf(f,"%ld",&n);
	
	for(i=1;i<=n;i++)
		fscanf(f,"%ld",&v[i]);
	
	quick(1,n);
	afis();
	
	fclose(f);
	fclose(g);
	return 0;
}