C# 合并排序算法“IndexOutOfRangeException”
我一直在阅读算法简介,并试图实现伪代码,但我似乎无法确定是什么导致IndexOutOfRangeException 合并 错误发生在左侧[i]<右侧[j] 解决 我通过将所有I和j变量设置为0,k设置为k=start-1来解决这个问题C# 合并排序算法“IndexOutOfRangeException”,c#,sorting,mergesort,C#,Sorting,Mergesort,我一直在阅读算法简介,并试图实现伪代码,但我似乎无法确定是什么导致IndexOutOfRangeException 合并 错误发生在左侧[i]
您在此行中遇到错误: 如果左[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++;
}
}
}