python实现快速排序:
def quick_sort(L, start, end):
if start < end:
x = L[end] # 记录第一个坑的值,在最后做填充
i = start # 初始位置和末尾会发上改变,所以需要先做好记录
j = end
m = end # 初始从最后面开始挖坑,所以先记录
while (start < end):
while (start < end) and (L[start] <= x): # 找出比假定的中位数x大的数,放到左边
start += 1
if start < end:
L[m] = L[start] # 填坑
m = start # 记录坑的位置
end -= 1 # 将坑填后下次应该忽略填过坑的这个位置
while (start < end) and (L[end] > x):
end -= 1
if start < end:
L[m] = L[end]
m = end
start += 1
L[start] = x
quick_sort(L,i,end-1) # 分治(前半部分)
quick_sort(L,start+1,j) # 分治(后半部分)
L = [1,0,4,2,7,5,9,3]
quick_sort(L, 0, len(L)-1)
print(L)