Cod sursa(job #627796)

Utilizator dany123Florea Daniel dany123 Data 30 octombrie 2011 18:22:17
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
//#include<iostream>
#include<fstream>
using namespace std;
int n,v[500000];

void citire()
{
	//cout<<"Sir initial: "; //*
	ifstream fin("algsort.in");
	fin>>n;
	for (int i=0;i<n;i++)
	{
		fin>>v[i];
	//	cout<<v[i]<<' '; //*
	}
	//cout<<endl;
	fin.close();
}
void mergesort(int i, int mij, int j)
{
	int v2[500000];
	memset(v2,0,sizeof(v2));
	int i1=i,i2=mij+1;
	int k=0;
	while (i1<=mij && i2<=j)
	{
		if (v[i1]<v[i2])
			v2[k++]=v[i1++];
		else
			v2[k++]=v[i2++];
	}
	while (i1<=mij) v2[k++]=v[i1++];
	while (i2<=j) v2[k++]=v[i2++];
	
	int cop=i;
	for (int d=0;d<=(j-i);d++)
		v[cop++]=v2[d];
}
	
void deti (int i, int j)
{
	if (i<j)
	{
		int mij=(i+j)/2;
		deti(i,mij);
		deti(mij+1,j);
		mergesort(i,mij,j);
	}
}
int main ()
{
	citire();
	deti(0,n-1);
	ofstream fout("algsort.out");
	for (int i=0;i<n;i++)
		fout<<v[i]<<' ';
	fout.close();
	return 0;
}