擅长:python、mysql、java
<p>实际上,您并不需要意大利面条式的嵌套函数,只要从<a href="https://rosettacode.org/wiki/Sorting_algorithms/Merge_sort#Python" rel="nofollow noreferrer">https://rosettacode.org/wiki/Sorting_algorithms/Merge_sort#Python</a>重复即可</p>
<pre><code>from heapq import merge
def merge_sort(m):
if len(m) <= 1:
return m
middle = len(m) // 2
left = m[:middle]
right = m[middle:]
left = merge_sort(left)
right = merge_sort(right)
return list(merge(left, right))
</code></pre>
<p>索引不应该有+1,因为如果Python片段是相同的索引,那么它们就不会重叠</p>
<pre><code>>>> x = [1,2,3,4,5,6]
>>> middle = 4
>>> x[:middle]
[1, 2, 3, 4]
>>> x[middle:]
[5, 6]
</code></pre>
<p>此外,merge的<code>heapq</code>实现比您可以编写的更为优化(=)</p>