我在歸併算法的Python作了如下實施:歸併,問題與遞歸基本情況和訂購
def mergeSort(listNumbers,ini,end):
if ini==end:
return listNumbers
else:
mid=(ini+end)/2
mergeSort(listNumbers,ini,mid)
mergeSort(listNumbers,mid+1,end)
merge(listNumbers,ini,mid,end)
def merge(listNumbersT,ini,mid,end):
b=[]
ind1=ini
ind2=mid+1
while ind1<=mid and ind2<=end:
if listNumbersT[ind1]<listNumbersT[ind2]:
b.append(listNumbersT[ind1])
ind1=ind1+1
else:
b.append(listNumbersT[ind2])
ind2=ind2+1
while ind1<=mid:
b.append(listNumbersT[ind1])
ind1=ind1+1
while ind2<=end:
b.append(listNumbersT[ind2])
ind2=ind2+1
listNumbersT=b
print listNumbersT
def main():
l=[4,1,8,2,5,9,10]
print mergeSort(l,0,len(l)-1)
if __name__=="__main__":
main()
我不知道如何解決我的遞歸調用歸併,當時的基本情況我運行程序打印無;而我唯一的方式來打印最後的結果是增加:
打印listNumbersT
在合併功能,我怎麼能解決這個問題?它似乎也沒有排列我列表中的最後一個元素。
任何幫助?
感謝
謝謝,但問題是,它不排序時,我這樣做的元素 – Layla 2014-10-19 23:42:24
我相信它現在已經修復。 – mrcl 2014-10-20 00:40:30