2014-10-20 102 views
1

我想了解如何合併排序遞歸堆棧實際上管理將兩個數組合併到排序的數組。合併排序遞歸調用堆棧

代碼和輸出都在 - https://gist.github.com/antani/144a2dfc85d89ae86297(以避免出現混亂的問題)

我無法想象這個算法的堆棧跟蹤

+0

**合併**不是由遞歸調用完成的。相反,它是由完美的普通'while'循環完成的。 – Pointy 2014-10-20 19:05:52

+0

你想知道什麼?看看http://en.wikipedia.org/wiki/Merge_sort上的動畫圖片,你應該知道它是如何完成的。 – plalx 2014-10-20 19:06:22

回答

0

嘛,兩個數組leftright排序如果他們將被合併。然後該算法將第一個因此最小的left值與最小的right值進行比較。兩者中較小的值是結果數組的下一個值。

這部分所產生的陣列也排序,將返回到遞歸深/臺階/迭代n -1 ......之後

也許這個動畫的工作排序算法將地獄您瞭解:http://www.sorting-algorithms.com