在研究合併排序幾天之後,我從概念上理解它,但有一件事我沒有得到。合併排序,遞歸部分
我得到什麼:
1)它需要一個列表,例如數字數組並分割成兩半和排序兩個半區,並最終將它們合併在一起。
2.)因爲它是一個遞歸算法,所以它使用遞歸來做到這一點。 所以提到陣列的分裂看起來是這樣的:
它,拆分陣列,直到只有一個在各列表項,並通過其視爲排序。 。在這一點在 合併的步驟應該是哪一個像這樣:
我不明白的是,如何遞歸「知道」它分裂的所有名單,只有一個項目後在列表中,爲了恢復遞歸樹?合併後左側和右側如何成爲左側?
困擾我的事情是這樣的。我已經採取了代碼的快照從interactivepython頁
如何代碼言歸正傳,我們已經lefthalf = 2後,和righthalf = 1,編寫一個在圖片的顯示,其中lefthalf = [1,2]和righthalf = [4,3],而不回到將我們已經合併的遞歸。
TNX, 湯姆
所以遍歷遞歸樹(向後)不依賴於遞歸,而是在合併? –
這是正確的。另一種思考方式:「前進」你將列表分成更小的片段,所以要「倒退」,你必須加入它們。 – sxclegz
但是,合併到新列表[3,4]時,如何合併兩個元素(例如[3]和[4])不會再次回調遞歸? –