我正在尝试在c#中实现合并排序以尝试学习该语言。我在分割步骤中分割数组时遇到问题。我来自c背景,会做这样的事情:
void MergeSort(int array[], int size)
{
if (size == 1)
return;
MergeSort(array, size/2);
MergeSort(array + size/2, size - size/2);
}
我的问题是,你能用c#做类似的事吗?我知道有采取和跳过方法,但这是最好的方法吗?
答案 0 :(得分:9)
使用索引而不是指针。
void MergeSort(int[] array, int startIndex, int endIndex){
...
}
答案 1 :(得分: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);
}