Pagini recente » Cod sursa (job #2198644) | Cod sursa (job #809921) | Cod sursa (job #2513277) | Cod sursa (job #142909) | Cod sursa (job #1321509)
#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;}