⚠️ 换一个输入,它就露馅了
同一个 msort_bad,换成 [0, 1, 2, 4, 3]:
def msort(a):
if len(a) <= 1:
return list(a)
m = len(a) // 2
L = msort(a[:m])
Rr = msort(a[m:])
out, i, j = [], 0, 0
while i < len(L) and j < len(Rr):
if L[i] <= Rr[j]:
out.append(L[i]); i += 1
else:
out.append(Rr[j]); j += 1
return out + L[i:] + Rr[j:]
def msort_bad(a):
"""漏了一句:合并到最后没把左半剩下的接上"""
if len(a) <= 1:
return list(a)
m = len(a) // 2
L = msort_bad(a[:m])
Rr = msort_bad(a[m:])
out, i, j = [], 0, 0
while i < len(L) and j < len(Rr):
if L[i] <= Rr[j]:
out.append(L[i]); i += 1
else:
out.append(Rr[j]); j += 1
return out + Rr[j:]
print("/".join(str(x) for x in msort_bad([0, 1, 2, 4, 3])))
全部评论