簡體   English   中英

合並排序中的基本情況下沒有退出遞歸

[英]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 == 5r == 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM