Cod sursa(job #721872)

Utilizator DaniLLeu Daniel DaniL Data 24 martie 2012 12:33:21
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");

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

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


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[100]){
	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[100])
{
	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<=n;i++)
			b[++k]=a[i];
		for(;j<=n;j++)
			b[++k]=a[j];
		
		for(i=ls;i<=ld;i++)
			a[i]=b[i];
}