Python 我们能称这个函数为快速排序吗

Python 我们能称这个函数为快速排序吗,python,complexity-theory,quicksort,Python,Complexity Theory,Quicksort,我在互联网上发现这个函数是用python编写的,我对它是否是一个快速排序感到困惑,因为它是用一行代码编写的,而且工作非常好,速度非常快,我认为即使在最坏的情况下,它也能以O(n*logn)的复杂度工作,因此代码如下: 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]])

我在互联网上发现这个函数是用python编写的,我对它是否是一个快速排序感到困惑,因为它是用一行代码编写的,而且工作非常好,速度非常快,我认为即使在最坏的情况下,它也能以O(n*logn)的复杂度工作,因此代码如下:

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 []
def qsort(L):
返回(qsort([x代表L[1]中的x,如果x=L[0]])如果L else[]

是的,它是快速排序,因为它与此算法定义完全匹配:从列表中选取任意元素,将低于此元素的值移动到列表的开头(在选定元素之前),并递归执行快速排序:

qsort([x for x in L[1:] if x < L[0]])

若列表为空(递归终止),那个么结果当然是空列表。

看起来像一个快速排序。将这一行拆分为多行以理解它。如果一行程序妨碍了可读性,那么仅仅为了它而使用一行程序通常是一个糟糕的主意……是的,这是一个快速排序。(它使用的空间少于最佳空间,但仍然很重要。)是的,这看起来像快速排序。但是请记住,快速排序最糟糕的情况是O(n^2),而不是O(n*logn).以前面的评论为基础:看看当输入列表已经有序时会发生什么。我想是的,但当我测试她的速度时,我发现它比megeSortAs好,据我记忆所及,而合并和快速排序都具有平均复杂度。对于典型的随机分布,nlogn快速排序的性能更好
qsort([x for x in L[1:] if x >= L[0]])