C# 合并排序算法“IndexOutOfRangeException”

C# 合并排序算法“IndexOutOfRangeException”,c#,sorting,mergesort,C#,Sorting,Mergesort,我一直在阅读算法简介,并试图实现伪代码,但我似乎无法确定是什么导致IndexOutOfRangeException 合并 错误发生在左侧[i]

我一直在阅读算法简介,并试图实现伪代码,但我似乎无法确定是什么导致IndexOutOfRangeException

合并

错误发生在左侧[i]<右侧[j]

解决

我通过将所有I和j变量设置为0,k设置为k=start-1来解决这个问题


您在此行中遇到错误:

如果左[i]<右[j]

因为i在变为6时超过了左数组长度,而左数组只有6个元素


当您使用调试时,很容易找到它。

您有stacktrace吗?您是否尝试过调试应用程序以查看在何处尝试访问超出范围的索引?请查阅有关如何在IDE Visual Studio中调试C应用程序或您正在使用的任何工具的指南。我保证这是值得的。VisualStudio示例:这是否回答了您的问题?另见
static void Merge(int[] array, int start, int middle, int end)
{
    i = 1;
    j = 1;

    for (k = start; k < end; k++)
    {
        if (left[i] < right[j])
        {
            array[k] = left[i];
            i = i + 1; // -> i++;
        }
        else
        {
            array[k] = right[j];
            j = j + 1; // -> j++;
        }
    }
}