擅长:python、mysql、java
<p>您正在对列表进行排序:排序的结果在原始列表中。如果要返回一个新列表,其中包含结果,而不修改原始列表:</p>
<pre><code>def mergesort1(l,r):
c = [0]*(len(l) + len(r))
i,j,k=0,0,0
while (i<len(l))&(j<len(r)):
if l[i]<r[j]:
c[k]=l[i]
i +=1
else:
c[k]=r[j]
j +=1
k +=1
while i<len(l):
c[k]=l[i]
i+=1
k+=1
while j<len(r):
c[k]=r[j]
j+=1
k+=1
return c
def mergesort(c):
if len(c)<2:
return list(c)
l = mergesort(c[0:(len(c)//2)])
r = mergesort(c[len(c)//2:len(c)])
return mergesort1(l,r)
</code></pre>