python - 合并排序 Python - 排序函数的问题

标签 python algorithm sorting data-structures

我正在尝试让这个合并排序算法工作,但我完全不知道为什么它不会工作。合并功能似乎可以正常工作,但排序功能似乎不起作用。我在网上搜索了一个解决方案,但我似乎无法找出我做错了什么。我应该提一下,我对 python 和一般编码还比较陌生,所以任何帮助都将不胜感激。 python代码如下:

def sort(sorted_list):
    if len(sorted_list) <= 1:
        return sorted_list

    middle = len(sorted_list) // 2
    left = sorted_list[:middle]
    right = sorted_list[middle:]
    left = sort(left)
    right = sort(right)
    return sorted_list(merge(left, right))

def merge(a_list, b_list):
    combined_list = []
    index_a = 0
    index_b = 0
    length_a = len(a_list)
    length_b = len(b_list)

    while index_a < length_a or index_b < length_b:
        if index_a < length_a and index_b < length_b:
            if a_list[index_b] <= b_list[index_b]:
                combined_list += [a_list[index_a]]
                index_a = index_a + 1
            else:
                combined_list += [b_list[index_b]]
                index_b = index_b + 1
        elif index_a < length_a:
            combined_list += [a_list[index_a]]
            index_a = index_a +1
        else:
            combined_list += [b_list[index_b]]
            index_b = index_b + 1
    return combined_list

最佳答案

这是错误的地方:

return sorted_list(merge(left, right))

应该是:

return merge(left, right)

此外,与您的错误无关,但应更正此行:

if a_list[index_b] <= b_list[index_b]:

到: if a_list[index_a] <= b_list[index_b]:

关于python - 合并排序 Python - 排序函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29359094/

相关文章:

algorithm - 两个循环但 Theta(n)?

r - 如何获取数据框中一对双列的第一个实例?

javascript - 不可变 JS - 如何按降序对日期进行排序

python - 如何在 python 字典中按值附加现有键?

python - 为什么Python3守护线程在控制台中立即关闭?

python - Django 静态文件 404(未找到)

python - 无法将 Pandas DataFrame 列数据类型转换为特定大小的字符串 (|S2)

c++ - 使用多个 uint32_t 整数生成 uint64_t 哈希键

java - 以下语法正确吗?

algorithm - 根据投票将人们分组