def qsort(L):
if L == []: return []
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]])
#以第一个元素为基准 把小于他的元素组成一个数组 递归排序 大于他的元素组成一个数组 递归排序
#此处没有像其他的语言实现,更换原有数组的位置 而是生成新的小数组(应该是每个元素一个数组)
# 最后组成结果数组
magic
下面是常规思路的快排
def quicksort(data, low = 0, high = None):
if high == None:
high = len(data) - 1
if low < high:
s, i, j = data[low], low, high
while i < j:
while i < j and data[j] >= s:
j = j - 1
if i < j:
data[i] = data[j]
i = i + 1
while i < j and data[i] <= s:
i = i + 1
if i < j:
data[j] = data[i]
j = j - 1
data[i] = s
quicksort(data, low, i - 1)
quicksort(data, i + 1, high)