为什么此python版本的快速排序有运行时错误

时间:2018-08-07 04:05:50

标签: python recursion

def quickSort(x):

    if len(x) <= 1:
        return x
    mid = x[0]
    l = filter(lambda k: k<=mid, x)
    r = filter(lambda k: k>mid, x)
    return quickSort(l)+quickSort(r)

b = [3,2,1,5,4]

quickSort(b)

然后我收到此错误:

RuntimeError:超过最大递归深度

1 个答案:

答案 0 :(得分:0)

您需要从2个较小的部分中取出分区元素:

def quickSort(x):
    if len(x) <= 1:
        return x
    mid = x[0]
    l = filter(lambda k: k<mid, x)
    r = filter(lambda k: k>mid, x)
    return quickSort(l) + [mid] + quickSort(r)

否则,您可以得到无限递归,因为子问题不会变得更小。