下面的內容適用於用Python編寫的合併排序。它拋出一個錯誤「RuntimeError:超過最大遞歸深度」。如果我錯過了結束遞歸的邏輯,請讓我知道。使用遞歸合併Python中的排序代碼
list=[]
list1=[]
list2=[]
def merge(list,list1,list2):
for k in range(1,len(list1)+len(list2)):
i=1
j=1
if list1[i]>list2[j]:
list[k]=list2[j]
j=+1
k=+1
else:
list[k]=list2[i]
i=+1
k=+1
def split(list,list1,list2):
if len(list)<>1:
list1=list[:len(list)/2]
list2=list[len(list)/2:]
return
def sort(list):
split(list,list1,list2)
sort(list1)
sort(list2)
merge(list,list1,list2)
list = [15,8,59,69,45,23]
sort(list)
不要將其命名對象'list'或'sort'。它們是內置的,你在遮蔽它們(這意味着你不能再使用內置的,因爲它被覆蓋)。我們其他人很難遵循 – mhlester
@ mhlester:'sort'沒問題。這是一種方法。它被「分類」,如果你影子它會導致問題。 – user2357112
抱歉當然你是對的。我只是不喜歡這樣一個平淡的名字 – mhlester