首页 > 解决方案 > 如何在 python 中使用两个列表(使用列表理解)进行快速排序?

问题描述

我需要对两个列表进行快速排序并将它们合并到一个列表中并输出结果。在节目中,lista = numbers = (1,2,3,4,5)listb = numberaa = (6,7,8,9,10)

结果是[1, 6, 2, 7, 3, 8, 4, 9, 5]

到目前为止,这是我的代码:

def quicksort(lista, listb):

    if len(lista) <= 1:
        return lista
    elif len(listb) <= 1:
        return listb
    else:
        pivota = lista[0]
        pivotb = listb[0]

        lesser = quicksort([x for x in lista[1:] if x < pivota], [y for y in listb[1:] if y < pivotb])
        greater = quicksort([x for x in lista[1:] if x >= pivota], [y for y in listb[1:] if y >= pivotb])

        result = lesser + [pivota] + [pivotb] + greater

        return result

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

print(quicksort(numbers, numberaa))

我认为我的程序有两个问题:

  1. 如果 的长度lista小于或等于 的长度listb,则经过排序后,将不会对lista中的其余元素进行排序。listb

  2. 输出结果不是按升序排列的。

我应该怎么做才能解决问题?

标签: pythonrecursionquicksort

解决方案


推荐阅读