【发布时间】:2017-03-18 01:18:54
【问题描述】:
我在互联网上找到了这个用 python 编写的函数,我很困惑它是否是一种快速排序,因为它是写在一行中的,而且它工作得非常好而且很快,我认为它可以处理 O 的复杂性( n*log n) 即使在最坏的情况下,代码如下:
def qsort(L):
return (qsort([x for x in L[1:] if x < L[0]]) +\
L[0:1] + \
qsort([x for x in L[1:] if x >= L[0]])) if L else []
【问题讨论】:
-
看起来像快速排序。
-
将这一行分成多行以理解它。如果它妨碍可读性,那么仅仅为了它而使用一个衬垫通常是一个糟糕的主意......
-
是的,这是一个快速排序。 (它使用的空间不是最理想的,但它仍然很重要。)
-
是的,看起来像快速排序。但请记住,快速排序的最坏情况复杂度是 O(n^2),而不是 O(n*log n)。
-
建立在之前的评论之上:看看当输入列表已经有序时会发生什么。
标签: python complexity-theory quicksort