【发布时间】:2021-08-13 00:38:54
【问题描述】:
我正在学习 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、r、u、d分别代表左、右、上、下
-
您能否为
arr提供一个触发无限递归的small 示例值?merge_row或merge_col打电话给mergesort吗? -
将
print(l, r, u, d)放在开头,这样您就可以查看是否总是越来越接近基本情况。 -
我不明白代码背后的逻辑。你到底是按什么排序的?
-
如果
x == 0,x + y/2只是x和y之间的中点。你想要x + (x - y)/2这样的东西。
标签: python algorithm sorting multidimensional-array