擅长:python、mysql、java
<p>您不需要跟踪两个列表。以下工作很好:</p>
<pre><code>def gensort(L):
if len(L) == 1:
return L
sorted_list = [min(L)]
L.remove(min(L))
return sorted_list + gensort(L)
</code></pre>
<p>下面是正在发生的事情:</p>
<pre><code>gensort([4, 1, 3, 2]) # returns [1] + gensort([4, 3, 2])
gensort([4, 3, 2]) # returns [2] + gensort([4, 3])
gensort([4, 3]) # returns [3] + gensort([4])
gensort([4]) # returns [4]
</code></pre>
<p>在返回值中替换,可以得到:</p>
<pre><code>[1] + [2] + [3] + [4]
</code></pre>
<p>其计算结果为<code>[1, 2, 3, 4]</code></p>