【发布时间】:2021-04-18 15:39:41
【问题描述】:
我一直在阅读算法简介并尝试实现伪代码,但我似乎无法确定导致IndexOutOfRangeException 的原因。
合并
错误发生在
left[i] < right[j]
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++;
}
}
}
已解决
我通过将所有
i和j变量设置为0和k到k = start - 1来解决它
【问题讨论】:
-
你有堆栈跟踪吗?您是否尝试过调试应用程序以查看您尝试访问超出范围的索引的位置?
-
请查阅有关如何在您正在使用的 IDE(Visual Studio 或其他)中调试 C# 应用程序的指南。我向你保证,这将是值得的。
-
Visual Studio 示例:docs.microsoft.com/en-us/visualstudio/get-started/csharp/…