[英]Merge sort python 3
我實現了這種合並排序算法,但我遇到了一些問題
import sys
if __name__ == '__main__':
input = sys.stdin.read()
data = list(map(int, input.split()))
n = data[0]
a = data[1:]
print(merge_sort(a))
def merge(left,rigt):
result = []
i = j = 0
while i < len(left) and j < len(rigt):
if left[i] <= rigt[j]:
result.append(left[i])
i += 1
else:
result.append(rigt[j])
j += 1
result += left[i:]
result += rigt[j:]
return result
def merge_sort(a):
if len(a) <= 2:
return 1
middle = len(a)//2
left = a[:middle]
right = a[middle:]
left = merge_sort(left)
right = merge_sort(right)
return list(merge(left,right))
我有這樣的錯誤
TypeError: object of type 'int' has no len()
我不明白,我哪里出錯了,為什么程序認為“ left”和“ right”是int,但是它是數組。
你應該更換
if len(a) <= 2:
return 1
同
if len(a) == 1:
return a
返回一個不可分區的列表。
您忘記了merge_sort函數的終止情況,該情況返回1。因此,當遞歸到達底部時,left和rigt都為int,因此您需要在代碼中加以考慮。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.