1
我知道這是不正確的,我發現another method沒有無限數量,但我仍然想知道它是否可以通過使用無限數字來糾正。使用Python來表示合併排序,如何避免IndexError
def MergeSort(A):
if len(A) > 1:
mid = len(A)/2
left = A[0:mid]
right = A[mid:]
MergeSort(left)
MergeSort(right)
w = float("inf")
left.append(w)
right.append(w)
i,j = 0,0
for k in range(len(A)):
if left[i] <= right[j]:
A[k] = left[i]
i += 1
else:
A[k] = right[j]
j += 1
我仍然感到困惑..... for循環運行lenA時間,當A被合併時,不會停止循環? – COCO
它確實可以解決問題,因爲你添加了兩個項目(inf到左邊,inf到右邊),當循環結束時,兩個項目都保留(左邊和右邊都是空的)。 –
但我的for循環只用於合併兩個列表,並且它不需要最後使這兩個列表爲空,是嗎?......或者我還沒有理解你的意思? – COCO