Pagini recente » Cod sursa (job #2575110) | Cod sursa (job #1555536) | Cod sursa (job #3139247) | Cod sursa (job #107599) | Cod sursa (job #1221775)
#include <fstream>
#define MAX_LENGTH 500000
using namespace std;
int v[MAX_LENGTH], aux[MAX_LENGTH], n;
int merge_sort(int left, int right)
{
int mid, i, j, pos;
if(left < right - 1)
{
mid = (left + right) / 2;
pos = left;
merge_sort(left, mid);
merge_sort(mid, right);
i = left;
j = mid;
while(i < mid || j < right)
{
if(i >= mid)
while(j < right)
aux[pos++] = v[j++];
else
{
if(j >= right)
while(i < mid)
aux[pos++] = v[i++];
else
{
if(v[i] < v[j])
aux[pos++] = v[i++];
else
aux[pos++] = v[j++];
}
}
}
for(i = left; i < right ; i++)
v[i] = aux[i];
}
}
int main()
{
int i;
ifstream f("algsort.in");
ofstream g("algsort.out");
f >> n;
for(i = 0 ; i < n ; i++)
f >> v[i];
merge_sort(0, n);
for(i = 0 ; i < n ; i++)
g << v[i] << " ";
return 0;
}