Pagini recente » Cod sursa (job #2281771) | Cod sursa (job #1457954) | Cod sursa (job #2417823) | Cod sursa (job #1376254) | Cod sursa (job #1013837)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
long a[500001],n;
void merge(long, long, long);
void mergesort(long low, long high)
{
long mid;
if (low<high)
{
mid=(low+high)/2;
mergesort(low,mid);
mergesort(mid+1,high);
merge (low, mid, high);
}
}
void merge(long low, long mid, long high)
{
long h,i,j,k,b[50];
h=low;
i=low;
j=mid+1;
while (h<=mid && j<=high)
{
if (a[j]<=a[h])
{
b[i]=a[h];h++;
}
else
{
b[i]=a[j];j++;
}
i++;
}
if (h>mid)
for (k=j;k<=high;k++)
{
b[i]=a[k];
i++;
}
else
for (k=h;k<=mid;k++)
{
b[i]=a[k];
i++;
}
for (k=low;k<=high;k++)
a[k]=b[k];
}
int main()
{
long i;
f>>n;
for (i=1;i<=n;i++)
f>>a[i];
mergesort(1,n);
for (i=1;i<=n;i++)
g<<a[i]<<" ";
f.close();g.close();
return 0;
}