merge-sort

理解不深入的缘故,每次写算法都要对着例子抄。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def mergesort(seq):
mid = len(seq)
lft, rgt = seq[:mid], seq[mid:]
if len(lft) > 1:
lft = mergesort(lft)
if len(rgt) > 1:
rgt = mergesort(rgt)

res = []
while lft and rgt:
if lft[-1] >= rgt[-1]:
res.append(lft.pop())
else:
res.append(rgt.pop())
res.reverse()
return (lft or rgt) + res

这些都是吃饭的家伙。。