lin桔桔 2023-04-10 19:39 采纳率: 100%
浏览 13
已结题

关于归并排序问题,如何解决?

shu = [5, 3, 7, 2, 4, 6, 1, 8]
def test(shu):
    if len(shu) <= 1:
        return shu
    mid = int(len(shu)/2)
    llist, rlist = test(shu[:mid]), test(shu[mid:])
    result = []
    i = 0
    j = 0
    while i < len(llist) and j < len(rlist):
        if rlist[j] < llist[i]:
            result.append(rlist[j])
            j = j + 1
        else:
            result.append(llist[i])
            i = i + 1
        result = result + llist[i:] + rlist[j:]
        return result
print(test(shu))

img

为什么结果错误

  • 写回答

1条回答 默认 最新

  • 语言-逆行者 2023-04-10 19:53
    关注

    你的代码实现了归并排序的思想,但是有一个小错误。在while循环结束后,你应该把result的赋值语句放在循环外面,否则会导致每次只返回一个元素。我修改了一下,你可以参考一下。

    shu = [5, 3, 7, 2, 4, 6, 1, 8]
    def test(shu):
        if len(shu) <= 1:
            return shu
        mid = int(len(shu)/2)
        llist, rlist = test(shu[:mid]), test(shu[mid:])
        result = []
        i = 0
        j = 0
        while i < len(llist) and j < len(rlist):
            if rlist[j] < llist[i]:
                result.append(rlist[j])
                j = j + 1
            else:
                result.append(llist[i])
                i = i + 1
        # 把result的赋值语句放在循环外面
        result = result + llist[i:] + rlist[j:]
        return result
    print(test(shu))
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月10日
  • 已采纳回答 4月10日
  • 创建了问题 4月10日

悬赏问题

  • ¥50 我撰写的python爬虫爬不了 要爬的网址有反爬机制
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法