我们可以把这个函数称为快速排序吗
can we call this function a quick sort
我在 Internet 上发现这个函数写在 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 []
是的,它是快速排序,因为它完全符合此算法定义:从列表中选取任意元素,将低于此元素的值移动到列表的开头(在选定元素之前)并递归执行快速排序:
qsort([x for x in L[1:] if x < L[0]])
大于或等于列表末尾的值(在选定元素之后)并递归执行快速排序
qsort([x for x in L[1:] if x >= L[0]])
如果列表为空(递归终止)那么结果当然是空列表。
我在 Internet 上发现这个函数写在 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 []
是的,它是快速排序,因为它完全符合此算法定义:从列表中选取任意元素,将低于此元素的值移动到列表的开头(在选定元素之前)并递归执行快速排序:
qsort([x for x in L[1:] if x < L[0]])
大于或等于列表末尾的值(在选定元素之后)并递归执行快速排序
qsort([x for x in L[1:] if x >= L[0]])
如果列表为空(递归终止)那么结果当然是空列表。