Pagini recente » Cod sursa (job #3003556) | Cod sursa (job #1251373) | Cod sursa (job #1731565) | Cod sursa (job #2177515) | Cod sursa (job #1259244)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500001];
void merge(int,int,int);
void merge_sort(int l,int h)
{
int m;
if(l<h)
{
m=(l+h)/2;
merge_sort(l,m);
merge_sort(m+1,h);
merge(l,m,h);
}
}
void merge(int l,int m,int h)
{
int g,i,j,b[50],k;
g=l;
i=l;
j=m+1;
while((g<=m)&&(j<=h))
{
if(a[g]<=a[j])
{
b[i]=a[g];
g++;
}
else
{
b[i]=a[j];
j++;
}
i++;
}
if(g>m)
{
for(k=j;k<=h;k++)
{
b[i]=a[k];
i++;
}
}
else
{
for(k=g;k<=m;k++)
{
b[i]=a[k];
i++;
}
}
for(k=l;k<=h;k++) a[k]=b[k];
}
int main()
{
int num,i;
f>>num;
for(i=1;i<=num;i++)
{
f>>a[i];
}
merge_sort(1,num);
g<<endl;
for(i=1;i<=num;i++)
g<<a[i]<<" ";
g<<'\n';
g.close();
return 0;
}