Pagini recente » Cod sursa (job #281681) | Cod sursa (job #3032648) | Cod sursa (job #1815817) | Cod sursa (job #579580) | Cod sursa (job #1013391)
#include<iostream>
#include<fstream>
using namespace std;
int v[500000],vec[500000];
void merge (int a, int q, int b)
{
int i=0,p1,p2;
p1=a; p2=q+1;
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
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;
}