Cod sursa(job #821320)

Utilizator wscsprint3rIrimescu Stefan wscsprint3r Data 22 noiembrie 2012 09:02:21
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
//

#include<stdio.h>
FILE *f=fopen("algsort.in","r"), *g=fopen("algsort.out","w");

long v[500000],inj,i,n,aux,sw,k;

void Quicksort(int st, int dr){

  int i,j,aux,mij;
	i=st;
	j=dr;
	mij=v[(i+j)/2];

	do{

		while(mij>v[i])
			i++;
		while(mij<v[j])
			j--;
		if(i<=j)
		{
		 aux=v[i];
		v[i]=v[j];
		v[j]=aux;
		i++;
		j--;
		}

	}while(i<=j);

	if(st<j)
		Quicksort(st,j);
	if(dr>i)
		Quicksort(i,dr);





}





void shell(){

	int h[]={3,2,1},w,k,j;

	for(w=0;w<3;w++)
	{
	   k=h[w];
	for(i=k;i<n;i=i++)
	{
	j=i-k;
	aux=v[i];
		while(j>=0 && v[j]>aux)
		{
		  v[j+k]=v[j];
		  j=j-k;
		}
	v[j+k]=aux;
	}


	}

}

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