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

我爱你,非常感谢我爱你,非常感谢