Pagini recente » Cod sursa (job #2391793) | Cod sursa (job #2463682) | infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #3272539) | Cod sursa (job #1024454)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n, v[500000], c[500000], m;
void merge(int st, int dr, int m)
{
int a=st, b=m, d=m+1, e=dr,k=0,i;
while(a<=b && d<=e)
if(v[a]<v[d])
{
c[k++]=v[a];
a++;
}
else
{
c[k++]=v[d];
d++;
}
while(a<=b)
{
c[k++]=v[a];
a++;
}
while(d<=e)
{
c[k++]=v[d];
d++;
}
for(i=st;i<=dr;i++)
v[i]=c[i-st];
}
void msort(int st, int dr)
{
int m;
if(st<dr){
m=(st+dr)/2;
msort(st,m);
msort(m+1,dr);
merge(st, dr, m);
}
}
int main()
{
f>>n;
for(int i=0;i<=n-1;i++) f>>v[i], c[i]=v[i];
msort(0,n-1);
for(int i=0;i<=n-1;i++)
g<<v[i]<<" ";// cout<<v[i]<<" ";
f.close();
g.close();
return 0;
}