快速排序_python
def quicksort(ls,result): if len(ls)<=1: result+=ls # return result else: flag=ls[0] left=[x for x in ls[1:] if x<=flag] quicksort(left,result) result.append(flag) right=[x for x in ls[1:] if x>flag] quicksort(right,result) return result print(quicksort([2,0,1,0,111],[]))
[0, 0, 1, 2, 111]
[Finished in 0.5s]
总结:1.以第一个元素为基准
2.为小于基准值元素集合和大于基准值元素进行排序
3.result收集排序结果
简洁版:
def quicksort(ls): if len(ls)<=1:return ls return quicksort([left for left in ls[1:] if left <ls[0]])+[ls[0]]+quicksort([right for right in ls[1:] if right>ls[0]]) print(quicksort([2,0,1,0,111]))
[0, 1, 2, 111]
[Finished in 0.5s]
注意:[ls[0]]