C 如何纠正mergesort实现中的错误
这是我的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 +
我试图只包括基本的细节。请帮我找出我的错误。我的快速排序实现也存在同样的问题
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。