我们可以快速调用这个函数吗?

时间:2017-03-16 00:40:58

标签: python complexity-theory quicksort

我发现这个函数是用互联网上的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 []

1 个答案:

答案 0 :(得分:0)

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

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

列表末尾的更大或相等的值(在所选元素之后)并递归执行快速排序

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

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