Cod sursa(job #1321509)

Utilizator Denisa13Stefan Denisa Denisa13 Data 19 ianuarie 2015 11:05:50
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>

using namespace std;

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

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


}
void mergesort(int a[500005],int ls, int ld)
{if(ls<ld)
{
	if(ld-ls==1)
		{if(a[ls]>a[ld])
			swap(a[ls],a[ld]);}
	else
	{
		int m=(ls+ld)>>1;
		mergesort(a,ls,m);
		mergesort(a, m+1, ld);
        interclasare(a,ls,ld,m);
	}
}
}
int main()
{int a[500005],n,i;
f>>n;
for(i=1;i<=n;i++)
	f>>a[i];
mergesort(a,1,n);
for(i=1;i<=n;i++)
	g<<a[i]<<' ';
f.close();
g.close();
return 0;}