Pagini recente » Cod sursa (job #2643416) | Cod sursa (job #1921077) | Cod sursa (job #270463) | Cod sursa (job #588786) | Cod sursa (job #2617934)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
int V[500005];
void merge(int L, int M, int R)
{
int n1, n2, i, j, k;
n1 = M - L + 1;
n2 = R - M;
int a[n1], b[n2];
for(i = 1; i <= n1; i++)
{
a[i]=V[L - 1 + i];
}
for(j = 1; j <= n2; j++)
{
b[j]=V[M+j];
}
i = 1; j = 1; k = L;
while(i <= n1 && j <= n2)
{
if(a[i] <= b[j])
{
V[k] = a[i];
i++;
}
else
{
V[k] = b[j];
j++;
}
k++;
}
while(i <= n1)
{
V[k] = a[i];
i++;
k++;
}
while(j <= n2)
{
V[k] = b[j];
j++;
k++;
}
}
void merge_sort(int L, int R)
{
int M;
if(L < R)
{
M = (L + R) / 2;
mergeSort(L, M);
mergeSort(M + 1, R);
merge(L, M, R);
}
}
int main()
{
int n, i;
f >> n;
for(i = 1; i <= n; i++)
{
f >> V[i];
}
mergeSort(1, n);
for(i = 1; i <= n; i++)
g << V[i] << " ";
return 0;
}