【发布时间】:2015-06-17 17:25:43
【问题描述】:
在研究了几天归并排序之后,我从概念上理解了它,但是有一点我没有理解。
我得到了什么:
1.) 它接受一个列表,例如一个数字数组,并将其分成两半并对两半进行排序,最后将它们合并在一起。
2.) 因为它是一种递归算法,所以它使用递归来做到这一点。 因此,上述数组的拆分如下所示:
它,拆分数组,直到每个列表中只有一个项目,并且它被认为是排序的。到那时,合并就介入了。 应该是这样的:
我不明白的是,在将所有列表拆分为列表中的一项后,递归如何“知道”以恢复递归树?有左右两边的东西合并后怎么变成左边?
困扰我的是这个。我已经从 interactivepython 页面截取了代码的快照
在我们得到 lefthalf = 2 和 righthalf = 1 之后,代码是如何到达重点的?回到将我们合并的内容划分的递归?
Tnx, 汤姆
【问题讨论】: