2
我想在Python中實現mergesort算法。我的輸入,file.txt的,是下面的形式:Mergesort列表中的Python數字排序
1
2
3
4
5
55
60
82
19
然而,我的輸出變爲(注意該列表的第二個元素):
[['1'], ['19'], ['2'], ['3'], ['4'], ['5'], ['55'], ['60'], ['82']]
是否有人可以解釋爲什麼這個實現的歸併未能將19放入Python列表中的適當位置?
import csv
list = []
with open('file.txt') as f:
lines = csv.reader(f, delimiter='\n')
for line in lines:
list.append(line)
def mergesort(list):
mid = len(list)//2
lft, rgt = list[:mid], list[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
print mergesort(list)
避免使用Python關鍵字命名變量,例如'list = []' –
'list'是* not *一個Python關鍵字:http://stackoverflow.com/questions/14595922/list-of-python-keywords – warship