Pagini recente » Cod sursa (job #2046299) | Cod sursa (job #262053) | Cod sursa (job #1503684) | Cod sursa (job #2573953) | Cod sursa (job #1021814)
#include<iostream>
#include<fstream>
using namespace std;
int a[500001];
void interclasare(int i,int m,int j)
{
int x,y,c[500001],k=0;
x=i;
y=m+1;
while(x<=m && y<=j)
if(a[x]<a[y])
{
k++;
c[k]=a[x];
x++;
}
else
{
k++;
c[k]=a[y];
y++;
}
while(x<=m)
{
k++;
c[k]=a[x];
x++;
}
while(y<=j)
{
k++;
c[k]=a[y];
y++;
}
x=1;
for(y=i;y<=j;y++)
{
a[y]=c[x];
x++;
}
}
void merge(int i,int j)
{
int m;
if(i<j)
{
m=(i+j)/2;
merge(i,m);
merge(m+1,j);
interclasare(i,m,j);
}
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int i,n;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
merge(1,n);
for(i=1;i<=n;i++)
g<<a[i]<<" ";
f.close();
g.close();
return 0;
}