我被合并排序递归部分卡住了。递归部分解释
void divide(int arr[], int low, int high) {
int mid;
if(low < high) {
mid = (low + high)/2;
divide (arr, low, mid);
divide (arr, mid+1, high);
numbersSort (arr, low, mid, high);
}
}
假设数组大小为4。第一时,它将由分别divide(arr,0,4)
然后divide(arr,0,2)
,divide(arr,0,1)
,divide(arr,0,0)
被调用。 但是一说到divide(arr,0,0)
就应该停在低位<高位。那么如何分工和numberSort()
函数?
我有另一个查询问,什么时候numberSort()工作? 如果你可以通过模拟上面的代码给我一行一行,我会感激你的。我对此感到非常恐慌。 高级谢谢。
为什么你不能使用调试器来查看代码的行为? –
@rana如上所示,使用调试器。如果您对编码真的很陌生,并且不知道如何使用它,请先尝试在每行之后添加打印件。这将有助于您快速了解代码。然后查看GDB手册或类似的东西来学习调试 – knightrider
http://wiki.codeblocks.org/?title=Debugging_with_Code:Blocks –