Pagini recente » Cod sursa (job #2142023) | Cod sursa (job #843887) | Cod sursa (job #1832542) | Cod sursa (job #2189048) | Cod sursa (job #1013387)
#include<iostream>
#include<fstream>
using namespace std;
int v[500001],vec[500001];
void _merge (int a, int q, int b)
{
int i=0,p1,p2;
p1=a, p2=q+1;
/*
while(p1<=q && p2<=b)
if(v[p1]<v[p2])vec[++i]=v[p1++];
else vec[++i]=v[p2++];
while(p1<=q)vec[++i]=v[p1++];
while(p2<=b)vec[++i]=v[p2++];
*/
while (p1<=q || p2<=b)
if (p1<=q && p2<=b)
if (v[p1]<v[p2])
vec[++i]=v[p1++];
else
vec[++i]=v[p2++];
else if (p1<=q)
vec[++i]=v[p1++];
else if(p2<=b)
vec[++i]=v[p2++];
for (i=a; i<=b; i++)
{v[i]=vec[i-a+1];
}
}
void _sort (int a, int b)
{ int q;
if (a<b)
{
q=(a+b)/2;
_sort (a,q);
_sort (q+1,b);
_merge (a,q,b);
}
}
int main()
{
int n,i;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for (i=1; i<=n; i++)
f>>v[i];
_sort (1,n);
for(i=1; i<=n; i++)
g<<v[i]<<" ";
return 0;
}