Код:
#include <iostream>
using namespace std;
void main()
{
int n;
int* a = (int*)malloc(sizeof(n) * n);
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
int h = 0;
merge_sort(a,h, n);
for (int d = 0; d < n; d++)
{
cout << a[d];
}
}
void merge_sort(int*a, int start, int end)
{
int mid = (start + end) / 2;
if ((end - start) > 1)
{
merge_sort(a, start, mid);
merge_sort(a, mid + 1, end);
merge(start, mid, end, a);
}
}
void merge(int start, int mid, int end, int *a1)
{
int p1 = start;//позиция чтения из 1 последновательности
int p2 = mid + 1;//позиция чтения из второй последовательности
int n;
int*result = &a1[n];
while( (start + p1 < mid) && (mid + p2 < end));
if (a1[start + p1] < a1[mid + p2]){
result[p1 + p2] = a1[start + p1];
p1++;
}
else
{
result[p1 + p2] = a1[mid + p2];
}
p2++;
while (start + p1 < mid)
result[p1 + p2] = a1[start + p1];
p1++;
while (mid + p2 < end)
result[p1 + p2] = a1[mid + p2];
p2++;
for (int i = 0; p1 + p2;i++)
a1[start + i] = result[i];
}
более исправленный код, без синтаксических ошибок, только мердж и мерджсорт не работают