1

我正在尝试在 c# 中实现合并排序以尝试学习该语言。我在拆分步骤中拆分数组时遇到问题。我来自交流背景,会做这样的事情:

void MergeSort(int array[], int size)
{
    if (size == 1) 
        return;
    MergeSort(array, size/2);
    MergeSort(array + size/2, size - size/2);
}

我的问题是,你能在 c# 中做类似的事情吗?我知道有采取和跳过方法,但这是最好的方法吗?

4

2 回答 2

9

使用索引而不是指针。

void MergeSort(int[] array, int startIndex, int endIndex){
...
}
于 2013-03-24T12:09:03.813 回答
2

也许您可以将要使用的索引传递给函数:

private static void MergeSort(int[] array, int size, int index) {
    if (size == 1) {
        return;
    }
    MergeSort(array, size / 2, index);
    MergeSort(array, size - size / 2, index + size / 2);
}
于 2013-03-24T12:10:23.007 回答