我想在 C++ 中编写归并排序,但遇到了一些内存错误,无法解决

I want to write merge sort in C++, but got some errors with memory and can't solve it

这是我的代码,当我 运行 它时,我 运行 内存不足 这可能取决于我的电脑还是代码有问题? 合并排序算法我在几个网站上读过,但没有任何帮助

#include <iostream>

using namespace std;

int quicksort (int m[], int left, int right)
 {
    int i = left;
    int j = right;
    int middle = m[(left + right) / 2];
    do{
        while (m[i] <= middle)
            i++;
        while (m[j] >= middle)
            j--;
        if (i <= j)
        {
            if (m[i] > m[j])
                swap (m[i], m[j]);
            i++;
            j--;
        }
    }while (i <= j);
    if (left < j)
        quicksort (m, left, j);
    if (i < right)
        quicksort (m, i, right);
}

int main ()
{
    int n, i;
    cin>> n;
    int m[n];
    for (i = 0; i <= n; i++)
        cin >> m[i];
    quicksort (m , 0, n - 1);
    for (i = 0; i <= n; i++)
        cout << m[i] << " ";
}

所以它现在应该可以工作了,你超出了数组的范围。

#include <iostream>

using namespace std;

int quicksort (int m[], int left, int right)
 {
    int i = left;
    int j = right;
    int middle = m[(left + right) / 2];
    do{
        while (m[i] < middle)
            i++;
        while (m[j] > middle)
            j--;
        if (i <= j)
            if (m[i] > m[j])
                swap (m[i], m[j]);
            i++;
            j--;
        }
    }while (i <= j);

    if (left < j)
        quicksort (m, left, j);

    if (i < right)
        quicksort (m, i, right);
}

int main () {
    int n, i;
    cin>> n;
    int m[n + 1];
    for (i = 0; i < n; i++){cin >> m[i];}
    quicksort (m , 0, n - 1);
    for (i = 0; i < n; i++){cout << m[i] << " ";}
}