2016-10-14 63 views
2

使用從this link代碼,所述merge函數不具有while環路,用於從臨時(helper)陣列到原始(numbers)陣列的右側部分的剩餘j元件。合併排序:爲什麼右側沒有剩餘的元素?

它仍然正常工作。我想知道是否有人能夠幫助解釋爲什麼j總是達到high(因爲helper陣列的右側沒有剩餘的元素需要簡單地複製到numbers陣列中)。

回答

3

函數merge(low, middle, high)從將numbers的元素複製到helper數組開始。

這就是爲什麼numbers數組已經有了元素,並且沒有意見將它們從helper中複製回來。

+1

哦!所以它是這樣的:因爲'j'指向數組的後半部分,所以我們不需要將剩餘的從索引'j'排序的元素從'j'複製回'high',因爲它們已經被先前的遞歸調用排序爲'合併「並且已經存儲在'數字'數組中。我是否正確?請讓我知道。 – Daksh

+0

@Daksh正確! – Slava

+0

謝謝! :-) – Daksh