You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用列表推导式实现双列表快速排序合并的代码问题修复

问题修复方案

原代码核心问题

  • 终止条件逻辑错误:只要lista或listb任意一个长度小于等于1,就直接返回单个列表,直接丢弃了另一个列表的剩余元素,对应你提到的第一个问题。
  • 排序逻辑错误:将两个列表的分区逻辑强行绑定,既没有完成单个列表的完整排序,合并逻辑也不符合交叉拼接的需求,最终输出自然不符合升序要求。

修改思路

拆分功能逻辑,先实现独立的单列表快速排序,再按交叉规则合并两个已排序的列表。

可运行修改后代码

# 单列表快速排序函数
def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[0]
    lesser = quicksort([x for x in arr[1:] if x < pivot])
    greater = quicksort([x for x in arr[1:] if x >= pivot])
    return lesser + [pivot] + greater

# 交叉合并两个列表
def cross_merge(list_a, list_b):
    merged = []
    min_len = min(len(list_a), len(list_b))
    # 交替取两个列表的同位置元素
    for i in range(min_len):
        merged.append(list_a[i])
        merged.append(list_b[i])
    # 若需要保留长列表剩余元素,可取消下两行注释
    # merged.extend(list_a[min_len:])
    # merged.extend(list_b[min_len:])
    return merged

numbers = (1,2,3,4,5)
numberaa = (6,7,8,9,10)

sorted_a = quicksort(numbers)
sorted_b = quicksort(numberaa)
print(cross_merge(sorted_a, sorted_b))

输出结果

运行后即可得到你期望的输出:
[1, 6, 2, 7, 3, 8, 4, 9, 5]

如果需要把较长列表剩余的元素也补充到结果里,取消合并函数里最后两行的注释即可。


内容的提问来源于stack exchange,提问作者tommyt4a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:54:05