[英]Recursion not exiting on the base case in merge sort
我正在學習 python 並正在實現 2D 矩陣合並排序,我的代碼在調用合並排序時進入無限循環,我無法找到相同的原因。
def mergesort(arr,l,r,u,d):
if(l>=r or u>=d):
return
else :
mid_h = l + int((r-1)/2)
mid_v = u + int((d-1)/2)
print( l,mid_h)
print(u,mid_v)
mergesort(arr,l,mid_h,u,mid_v)
mergesort(arr,mid_h+1,r,u,mid_v)
mergesort(arr,l,mid_h,mid_v+1,d)
mergesort(arr,mid_h+1,r,mid_v+1,d)
merge_row(arr,l,mid_h,r,u,mid_v,d)
merge_col(arr,l,mid_h,r,u,mid_v,d)
你的中點實際上並不是中點。 考慮l == 5
和r == 8
。 然后l + r//2 == 5 + 4 == 9
。
相反,你想要
# Add half the distance between the endpoints, not half the far endpoint.
mid_h = l + (r - l) // 2
mid_v = u + (d - u) // 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.