研究了几天合并排序后,我从概念上理解了它,但有一点我不明白。
我得到什么:
1.) 它需要一个列表,例如一个数字数组,将其分成两半并对两半进行排序,最后将它们合并在一起。
2.) 因为它是一种递归算法,所以它使用递归来做到这一点。
因此,上述数组的分割如下所示:
它将数组拆分,直到每个列表中只有一项,并且据此认为已排序。就在那时,合并开始了。
应该是这样的:
我不明白的是,在将所有列表拆分为列表中的一项后,递归如何“知道”以恢复递归树?有左侧和右侧的东西合并后如何变成左侧?
The thing that bothers me is this. I've taken a snapshot of the code from interactivepython page
![enter image description here](https://i.stack.imgur.com/s3FZI.png)
在我们有 lefthalf = 2 和 righthalf = 1 之后,代码如何到达图中所示的代码,其中 lefthalf = [1,2] 和 righthalf = [4,3] 而无需返回会分割我们合并的内容的递归?
Tnx,
Tom
一旦列表仅包含一个元素,每一对叶子都会被排序并连接。然后你可以遍历列表并找出下一对应该插入的位置。递归“不知道”返回递归树,而是具有这种效果的排序和连接行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)