我发现这个函数是用互联网上的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 []
答案 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为空(递归终止),那么当然结果是空列表。