Pagini recente » Cod sursa (job #710742) | Cod sursa (job #189144) | Cod sursa (job #2141595) | Cod sursa (job #935109) | Cod sursa (job #1022905)
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long a[500001],b[500001],n;
void Interclasare(long s,long m,long d)
{
long i=s,j=m+1,k=s;
while(i<=m && j<=d)
{
if(a[i]<a[j])
{
b[k]=a[i];
i++;
}
else
if(a[i]>a[j])
{
b[k]=a[j];
j++;
}
else
{
b[k++]=a[i];
b[k]=a[j];
i++;
j++;
}
k++;
}
while(i<=m)
{
b[k]=a[i];
i++;
k++;
}
while(j<=d)
{b[k]=a[j++];
k++;
}
k=s;
for(k=s;k<=d;k++)
a[k]=b[k];
}
void MergeSort(long st,long dr)
{long m;
m=(st+dr)/2;
if(st<dr)
{
MergeSort(st,m);
MergeSort(m+1,dr);
}
Interclasare(st,m,dr);
}
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;
}