在研究合并排序几天之后,我从概念上理解它,但有一件事我没有得到。合并排序,递归部分
我得到什么:
1)它需要一个列表,例如数字数组并分割成两半和排序两个半区,并最终将它们合并在一起。
2.)因为它是一个递归算法,所以它使用递归来做到这一点。 所以提到阵列的分裂看起来是这样的:
它,拆分阵列,直到只有一个在各列表项,并通过其视为排序。 。在这一点在 合并的步骤应该是哪一个像这样:
我不明白的是,如何递归“知道”它分裂的所有名单,只有一个项目后在列表中,为了恢复递归树?合并后左侧和右侧如何成为左侧?
困扰我的事情是这样的。我已经采取了代码的快照从interactivepython页
如何代码言归正传,我们已经lefthalf = 2后,和righthalf = 1,编写一个在图片的显示,其中lefthalf = [1,2]和righthalf = [4,3],而不回到将我们已经合并的递归。
TNX, 汤姆
所以遍历递归树(向后)不依赖于递归,而是在合并? –
这是正确的。另一种思考方式:“前进”你将列表分成更小的片段,所以要“倒退”,你必须加入它们。 – sxclegz
但是,合并到新列表[3,4]时,如何合并两个元素(例如[3]和[4])不会再次回调递归? –