Pagini recente » Cod sursa (job #465163) | Cod sursa (job #1021411) | Cod sursa (job #788923) | Cod sursa (job #58600) | Cod sursa (job #1321499)
#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;}