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)