Pagini recente » Cod sursa (job #1841797) | Cod sursa (job #1014065) | Cod sursa (job #1433323) | Istoria paginii runda/qwegqe | Cod sursa (job #1016488)
#include<iostream>
#include<fstream>
using namespace std;
int a[500001],n;
void interclasare(int low,int mid,int high)
{int i=low,j=mid+1,c[500001],k=low,t;
while (i<=mid && j<=high)
{if(a[i]<a[j])
c[k++]=a[i++];
else
c[k++]=a[j++];
}
for(t=i;t<=mid;t++)
c[k++]=a[t];
for(t=j;t<=high;t++)
c[k++]=a[t];
for(t=low;t<=high;t++)
a[t]=c[t];
}
void mergesort(int low,int high)
{int mid;
if (low<high)
{mid=(low+high)/2;
mergesort(low,mid);
mergesort(mid+1,high);
interclasare(low,mid,high);
}
}
void citire ()
{ifstream f("algsort.in");
int i;
f>>n;
for(i=0;i<n;i++)
f>>a[i];
f.close();
}
void afisare ()
{int i;
ofstream g("algsort.out");
for(i=0;i<n;i++)
g<<a[i]<<" ";
g.close();
}
int main()
{
citire();
mergesort(0,n-1);
afisare();
return 0;
}