Cod sursa(job #1321499)

Utilizator Denisa13Stefan Denisa Denisa13 Data 19 ianuarie 2015 10:57:53
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 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++];
    cout<<b[k]<<' ';
}
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
	{
		mergesort(a,ls,(ls+ld)/2);
		mergesort(a, (ls+ld)/2+1, ld);
        interclasare(a,ls,ld,(ls+ld)/2);
	}
}
}
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;}