Cod sursa(job #721883)

Utilizator DaniLLeu Daniel DaniL Data 24 martie 2012 12:43:04
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
#define DIM 500001

using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");

int n , a[DIM] , i , j,b[DIM],ok;

void interclasare(int, int, int, int[]);
void sort( int ls, int ld , int a[]);


int main()
{
	f>>n;
	for(i=1;i<=n;i++)
		f>>a[i];
	
	sort(1,n,a);
	for(i=1;i<=n;i++)
		g<<a[i]<<" ";
	return 0;

}



void sort( int ls, int ld , int a[]){
	if(ld-ls>=1){
		int m=(ls+ld)/2;
		sort(ls , m ,a);
		sort(m+1,ld,a);
		
		interclasare(ls,m,ld,a);
	}
}
void interclasare(int ls, int m , int ld , int a[])
{
	int i=ls; int j=m+1; 
	int k=ls-1;
	while(i<=m && j<=ld)
		if(a[i]<a[j])
			b[++k]=a[i++];
		else b[++k]=a[j++];
	for(;i<=m;i++)
		b[++k]=a[i];
	for(;j<=ld;j++)
		b[++k]=a[j];
		
	for(i=ls;i<=ld;i++)
		a[i]=b[i];
}