1

言語を学習するために、c#でマージソートを実装しようとしています。分割ステップで配列を分割するのに問題があります。私はACのバックグラウンドから来て、次のようなことをします。

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 に答える