我的代碼有什麼問題?它僅打印vect值的一部分。似乎while循環在某個時候斷了。我不明白爲什麼。合併排序問題 - Python
def print_list(vect):
for i in range(0, len(vect)):
print(vect[i])
def merge_sort(vect):
left = []
right = []
result = []
for i in range(0, int(len(vect)/2)):
left.append(vect[i])
for i in range(int(len(vect)/2), len(vect)):
right.append(vect[i])
left.sort()
right.sort()
i = 0
j = 0
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
print(len(result))
return result
vect = [3, 1, 5, 7, 10, 2, 0]
vect = merge_sort(vect)
我不明白你爲什麼要調用'left.sort()'和'right.sort()'。這對列表的每一半使用Python的內部排序功能,這使得mergesort的實現完全沒有意義。 – 2013-02-08 17:46:53