合并排序算法 "IndexOutOfRangeException"

MergeSort Algorithm "IndexOutOfRangeException"

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

合并

The error happens at 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 solved it by setting all i and j variables to 0 and k to k = start - 1

您在这一行遇到错误:

如果(左[i] < 右[j])

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

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