python 中的合并排序 - 对象 NoneType 错误

mergeSort in python - object NoneType error

我正在尝试在 python 中实现一个简单的合并排序,目的是将函数拆分为 mergeSort 并合并。我的代码如下所示:

def merge_sort(s):
    if len(s) <= 1:
        return s
    else:
        m = len(s) // 2
        s1 = merge_sort(s[:m])
        s2 = merge_sort(s[m:])
        print(merge(s1, s2))
        return merge(s1, s2)



def merge(s1, s2):
    i=0
    j=0
    k=0
    while i < len(s1) and j< len(s2):
        if s1[i] < s2[j]:
            s[k] = s1[i]
            i += 1
        else:
            s[k] = s2[j]
            j += 1
        k += 1

    while i < len(s1):
        s[k] = s1[i]
        i += 1
        k += 1

    while j < len(s2):
        s[k] = s2[j]
        j += 1
        k += 1

现在我确实相信我理解了归并排序的基本思想,但是当我测试我的代码时

我收到错误:

TypeError: object of type 'NoneType' has no len()

2 小时后,我放弃并构建了不同的代码并且它有效,但它仍然困扰着我,因为我相信上面的代码是正确的,我只是遗漏了一些细节。 如果有人能向我解释,我将不胜感激。 谢谢!

def merge_sort(s):
    if len(s) <= 1:
        return s
    else:
        m = len(s) // 2
        s1 = merge_sort(s[:m])
        s2 = merge_sort(s[m:])
        print(merge(s1, s2))
        return merge(s1, s2)




def merge(s1, s2):
    s = []
    i=0
    j=0
    while i < len(s1) and j< len(s2):
        if s1[i] < s2[j]:
            s.append(s1[i])
            i += 1
        else:
            s.append(s2[j])
            j += 1

    while i < len(s1):
        s.append(s1[i])
        i += 1

    while j < len(s2):
        s.append(s2[j])
        j += 1
    return s