Pagini recente » Cod sursa (job #1804630) | Cod sursa (job #1855525) | Cod sursa (job #2251590) | Cod sursa (job #402234) | Cod sursa (job #2534734)
#include <iostream>
#include <fstream>
using namespace std;
int n, i,j,k;
void Merge(int v[], int s, int m, int d)
{
int n1 = m - s + 1;
int n2 = d - m;
int vs[n1];
int vd[n2];
for(i = 0; i < n1; i++)
vs[i] = v[s + i];
for(i = 0; i < n2; i++)
vd[i] = v[m + i + 1];
i = 0;
j = 0;
k = s;
while( i < n1 && j < n2)
{
if(vs[i] < vd[j])
{
v[k] = vs[i];
i++;
}
else
{
v[k] = vd[j];
j++;
}
k++;
}
while( i < n1)
{
v[k] = vs[i];
i++;
k++;
}
while( j < n2)
{
v[k] = vd[j];
j++;
k++;
}
}
void MergeSort(int v[], int s, int d)
{
if(s < d)
{
int m = s + (d-s)/2;
MergeSort(v, s, m);
MergeSort(v, m+1, d);
Merge(v, s, m, d);
}
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500002];
f>>n;
for( i = 0; i < n; i++)
f>> v[i];
MergeSort(v, 0, n-1);
for( i = 0; i < n; i++)
g << v[i]<< " ";
return 0;
}