C 如何纠正mergesort实现中的错误

C 如何纠正mergesort实现中的错误,c,sorting,C,Sorting,这是我的Mergesort代码,但它给出了错误的输出。我不知道为什么。 我试图只包括基本的细节。请帮我找出我的错误。我的快速排序实现也存在同样的问题 void merge(int arr[], int l, int m, int r) { int n1 = m - l + 1; int n2 = r - m; int L[n1], R[n2]; for(int i = 0; i < n1; i++) L[i] = arr[l +

这是我的Mergesort代码,但它给出了错误的输出。我不知道为什么。
我试图只包括基本的细节。请帮我找出我的错误。我的快速排序实现也存在同样的问题

void merge(int arr[], int l, int m, int r)
{

    int n1 = m - l + 1;

    int n2 = r - m;

    int L[n1], R[n2];
 

    for(int i = 0; i < n1; i++)

        L[i] = arr[l + i];

    for(int j = 0; j < n2; j++)

        R[j] = arr[m + 1 +j];
    int i = 0; 

    int j =0;

    int k = l;

     

    while (i < n1 && j < n2)

    {

        if (L[i] <= R[j]) 

        {

            arr[k] = L[i];

            i++;

        }

        else

        {

            arr[k] = R[j];

            j++;

        }

        k++;

    }

    while (i < n1) 

    {

        arr[k] = L[i];

        i++;

        k++;

    }
 
    while (j < n2)

    {

        arr[k] = R[j];

        j++;

        k++;

    }
}


void mergeSort(int arr[], int l, int r)
{

    if (l < r)

   {
        int m = l + (r - l) /2;
        mergeSort(arr, l, m);

        mergeSort(arr, m + 1, r);
 

        merge(arr, l, m, r);

    }
}
void合并(int arr[],int l,int m,int r)
{
int n1=m-l+1;
int n2=r-m;
int L[n1],R[n2];
对于(int i=0;i如果(L[i]我试图通过在每一步打印我的low、mid、high值来逐步查看,但我无法通过这种方式找到我的错误,请帮助我,我对3天的程序感到非常恼火“我试图只包括基本的细节。”这很好。但请通过制作一个演示问题的示例来实现。我建议使用硬编码的示例数据来简化这一过程。确实需要了解如何使用一些示例数据调用
mergeSort
。抱歉,但是合并排序应该在第一次传递时给出(对于4,0,6,1,5,2,3):0,4,6,1,2,3,5。在下一次传递时,它应该给出0,1,2,3,4,5,6。