這是我的合併排序Python代碼,我無法理解爲什麼我在第23行獲得IndexError
。索引錯誤:Python代碼中的列表索引超出範圍
如果放在for
循環之前,第23行沒有給出錯誤,但是在for
循環中它表示list index out of range
。 :(
from math import floor
def merge_sort(a,p,r):
if p < r:
q = (p+r)/2
merge_sort(a,p,q)
merge_sort(a,q+1,r)
merge(a,p,q,r)
def merge(A,p,q,r):
n1 = q - r +1
n2 = r - q
L = []
R = []
#print n1
for i in range (1,n1):
L.append(a[p+i-1])
for j in range (1,n2):
R.append(a[q+j])
L.append(10000)
R.append(10000)
i,j=0,0
for k in range (p,r):
if L[i] <= R [j]: # This is where the error occurs
A[k] = L[i]
i = i + 1
else :
A[k] = R[j]
j = j + 1
a=[1,4,9,8,2,3,8,2,9]
merge_sort(a,1,len(a))
print a
哪一行是23行?你可以用評論來表明它嗎? –
你的縮進被搞砸了,你應該使用四個空格來縮進。 –
爲什麼你需要'L.append(10000)'操作? –