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)
本文介绍了两种不同的快速排序实现方法:一种是通过递归创建新的子数组进行排序;另一种则是使用原地排序的方式,通过一个基准元素将数组分为两部分并递归排序两边。这两种方法都遵循了快速排序的基本思想。
868

被折叠的 条评论
为什么被折叠?



