Pagini recente » Cod sursa (job #2611377) | Cod sursa (job #2269176) | Cod sursa (job #2695477) | Cod sursa (job #2497454) | Cod sursa (job #600731)
Cod sursa(job #600731)
using namespace std;
#include<iostream>
#include<fstream>
#define nmax 500010
ofstream fout("algsort.out");
int N,a[nmax];
int d[nmax];
void merge(int l1,int r1,int l2,int r2)
{
int i,j,k;
for(i=l1,j=l2,k=1;i<=r1 && j<=r2;k++)
{
if(a[i]<a[j])
d[k]=a[i],i++;
else
d[k]=a[j],j++;
}
for(;i<=r1;i++,k++)
{
d[k]=a[i];
}
for(;j<=r2;j++,k++)
{
d[k]=a[j];
}
k--;
for(i=1;i<=k;i++)
{
a[l1-1+i]=d[i];
//cout<<d[i]<<" ";
}
// cout<<"\n";
}
void sort(int l,int r)
{
if(l==r)
return;
int m;
m=(l+r)/2;
sort(l,m);
sort(m+1,r);
/*cout<<l<<" "<<r<<":\n";
for(int i=l;i<=r;i++)
cout<<a[i]<<" ";
cout<<"\n";*/
merge(l,m,m+1,r);
}
void cit()
{
int i;
ifstream fin("algsort.in");
fin>>N;
for(i=1;i<=N;i++)
{
fin>>a[i];
}
/*for(i=1;i<=N;i++)
{
cout<<a[i]<<" ";
}
cout<<"\n";*/
fin.close();
}
int main()
{
cit();
sort(1,N);
int i;
for(i=1;i<=N;i++)
fout<<a[i]<<" ";
fout<<"\n";
fout.close();
return 0;
}