Pagini recente » Cod sursa (job #1581760) | Cod sursa (job #1148832) | Cod sursa (job #741189) | Cod sursa (job #1381289) | Cod sursa (job #1009247)
#include <iostream>
#include <fstream>
#define L_MAX 5000000
using namespace std;
int n, v[L_MAX], c[L_MAX];
void mergee(int left, int right, int m)
{
int l = left, r = m + 1, k = 0;
while(l <= m && r <= right)
if(v[l] < v[r])
c[k++] = v[l++];
else
c[k++] = v[r++];
while(l <= m)
c[k++] = v[l++];
while(r <= right)
c[k++] = v[r++];
for(int i = left; i <= right; i++)
v[i] = c[i-left];
}
void merge_sort(int left, int right)
{
int m;
if(left < right)
{
m = (left + right) / 2;
merge_sort(left, m);
merge_sort(m+1, right);
mergee(left, right, m);
}
}
int main()
{
ifstream in("algsort.in");
ofstream out("algsort.out");
in >> n;
for(int i = 0; i <= n - 1; i++)
{
in >> v[i];
c[i] = v[i];
}
merge_sort(0, n-1);
for(int i = 0; i <= n - 1; i++)
out << v[i] << " ";
in.close();
out.close();
return 0;
}