Pagini recente » Cod sursa (job #3184709) | Cod sursa (job #2360105) | Cod sursa (job #2752182) | Cod sursa (job #680617) | Cod sursa (job #1868687)
#include <iostream>
#include <fstream>
#define Nmax 500001
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n, v[Nmax], s[Nmax];
void overwrite(int st , int dr)
{
for(int i=st;i<=dr;i++)
v[i]=s[i];
}
void merge_sort(int st, int dr)
{
if(st>=dr)
return;
int mij=(st+dr)/2;
merge_sort(st, mij);
merge_sort(mij+1, dr);
int x=st, y=mij+1, aux=st;
while(st<=dr)
{
if(x>=mij+1 || (v[y]<=v[x] && y<=dr))
{
s[st]=v[y];
y++;
st++;
}
else if(y>dr || (v[x]<=v[y] && x<=mij))
{
s[st]=v[x];
st++;
x++;
}
}
overwrite(aux, dr);
}
int main()
{
f>>n;
for(int i=1;i<=n;i++)
{
f>>v[i];
s[i]=v[i];
}
merge_sort(1, n);
for(int i=1;i<=n;i++)
{
g<<v[i]<<" ";
}
return 0;
}