【问题标题】:MergeSort Algorithm "IndexOutOfRangeException" [duplicate]合并排序算法“IndexOutOfRangeException”[重复]
【发布时间】: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++;
        }
    }
}

已解决

我通过将所有 ij 变量设置为 0kk = start - 1 来解决它

【问题讨论】:

标签: c# sorting mergesort


【解决方案1】:

您在这一行中遇到错误:

如果(左[i]

因为 i 超过 left 数组长度,当它变成 6 并且数组 left 只有 6 个元素。

使用调试的时候很容易搞清楚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-04
    • 2021-06-27
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多