我被合併排序遞歸部分卡住了。遞歸部分解釋
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 –