Cod sursa(job #667592)

Utilizator mihaidutescuDutescu Mihai mihaidutescu Data 23 ianuarie 2012 14:07:23
Problema Sortare prin comparare Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>

void citire(int *a,int &n)
{
	FILE *f=fopen("algsort.in","r");
	int i;
	fscanf(f,"%d\n",&n);
	for(i=0;i<n;i++)
		fscanf(f,"%d ",&a[i]);
}

void afisare(int *a,int &n)
{
	FILE *f=fopen("algsort.out","w");
	int i;
	fprintf(f,"%d",a[0]);
	for(i=1;i<n;i++)
		fprintf(f," %d",a[i]);
}

void qsort(int *a,int min,int max)
{
	int pivot=a[min],i,j,tmp;
	i=min;
	j=max;
	if(max>min)
	{
		while(i<j)
		{
			while(a[i]<=pivot)
				i++;
			while(a[j]>pivot)
				j--;
			
			if(i<j)
			{
				tmp=a[i];
				a[i]=a[j];
				a[j]=tmp;
			}
		}
		
		tmp=a[j];
		a[j]=a[min];
		a[min]=tmp;
		
		qsort(a,min,j-1);
		qsort(a,j+1,max);
	}
}

int main()
{
	int a[500000],n;
	citire(a,n);
	
	qsort(a,0,n-1);
	
	afisare(a,n);
	
	return 0;
}