Pagini recente » Cod sursa (job #675266) | Cod sursa (job #1407789) | Cod sursa (job #2306154) | Cod sursa (job #1883688) | Cod sursa (job #1851800)
#include <fstream>
#include <cstring>
using namespace std;
int n;
int a[500000];
void mrg(int* v1, int sz1, int* v2, int sz2)
{
int i = 0;
int j = 0;
int s = 0;
int temp[sz1+sz2];
while(i < sz1 && j < sz2)
if(v1[i] < v2[j])
{
temp[s] = v1[i];
s++;
i++;
}
else
{
temp[s] = v2[j];
s++;
j++;
}
while(i < sz1)
{
temp[s] = v1[i];
s++;
i++;
}
while(j < sz2)
{
temp[s] = v2[j];
s++;
j++;
}
memcpy(v1, temp, s * sizeof(int));
}
void merge_sort(int* v, int sz)
{
if(sz == 1)
return;
merge_sort(v, sz/2);
merge_sort(v + sz/2, sz - sz/2);
mrg(v, sz/2, v+sz/2, sz - sz/2);
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
f >> n;
for(int i = 0; i < n; i++)
f >> a[i];
merge_sort(a, n);
for(int i = 0; i < n; i++)
g << a[i] << ' ';
return 0;
}