Python 带非递归合并的递归合并排序
我试图编写一个递归合并排序算法,但是我的合并算法不是递归的 我被告知在下面的函数中使用以下参数来执行此操作Python 带非递归合并的递归合并排序,python,recursion,mergesort,Python,Recursion,Mergesort,我试图编写一个递归合并排序算法,但是我的合并算法不是递归的 我被告知在下面的函数中使用以下参数来执行此操作 def merge(left_buffer, right_buffer, data): "Merges two sets of data together by comparison" print("MERGING",left_buffer,"and",right_buffer) #Dual it
def merge(left_buffer, right_buffer, data):
"Merges two sets of data together by comparison"
print("MERGING",left_buffer,"and",right_buffer)
#Dual iteration
m = 1
n = 1
k = 0
j = 0
for i in range(len(data)):
if len(left_buffer) == 0:
data[i] = right_buffer[k]
k+=1
elif len(right_buffer) == 0:
data[i] = left_buffer[j]
j += 1
elif left_buffer[0] < right_buffer[0]:
data[i] = left_buffer[0]
left_buffer = left_buffer[1:]
else:
data[i] = right_buffer[0]
right_buffer = right_buffer[1:]
print('Result of the merge:',data)
我收到的主要问题是,在最后合并两个列表时,我得到的是合并None
类型
我不知道如何解决这个问题
也许我的合并算法不正确,但是我的导师说它很好。你的
merge
方法没有返回任何内容,所以当你的merge\u sort
方法返回时,它也返回None
这些None
值被传递到left
和right
,然后将其传递到merge
方法中
也许您希望您的merge\u sort
方法执行合并,然后返回合并的数据?即:
merge(left,right,data)
return data
或者,您可以修改
merge
,通过在其末尾添加行return data
,使其返回合并数据。您的merge
方法不返回任何内容,因此当merge\u sort
方法返回时,它也返回None
这些None
值被传递到left
和right
,然后将其传递到merge
方法中
也许您希望您的merge\u sort
方法执行合并,然后返回合并的数据?即:
merge(left,right,data)
return data
或者,您可以修改
merge
,使其返回合并的数据,方法是在其末尾添加一行return data
。我爱你,非常感谢我爱你,非常感谢