при запуске программы она работает правильно, но всегда выдает эту ошибку. он говорит, что ошибка исходит из строки:
int* temp = new int[length];
Я не знаю, почему это происходит. программа возвращает массив в отсортированном порядке возрастания, но затем выбрасывает точку останова.
void mergeSort(int *a, int low, int high)
{
if (low == high)
return;
int q = (low + high) / 2;
mergeSort(a, low, q);
mergeSort(a, q + 1, high);
merge(a, low, q, high);
}
void merge(int *a, int low, int q, int high)
{
const int length = high - low + 1;
int* temp = new int[length];
int i = low;
int k = low;
int j = q + 1;
while (i <= q && j <= high)
{
if (a[i] <= a[j])
temp[k++] = a[i++];
else
temp[k++] = a[j++];
}
while (i <= q)
temp[k++] = a[i++];
while (j <= high)
temp[k++] = a[j++];
for (i = low; i <= high; i++)
a[i] = temp[i];
}