[算法] 快速排序
# 快速排序递归玩法 def quicksort(arr): # 结束条件 if len(arr) <= 1: return arr # 用中间值更稳定 middle = arr[len(arr) // 2] # 记得将middle拿出来,最后再放到中间 del arr[len(arr) // 2] # 利用列表生成式,100W数据,2.9s # left = [x for x in arr if x <= middle] # right = [x for x in arr if x > middle] # 2.6s left = [] right = [] for x in arr: left.append(x) if x <= middle else right.append(x) # 记得把middle放中间 return quicksort(left) + [middle] + quicksort(right) # 非递归玩法 def quicksort2(arr): ''' 模拟栈操作实现非递归的快速排序 ''' if len(arr) < 2: return arr stack = [] stack.append(len(arr) - 1) stack.append(0) while stack: l = stack.pop() r = stack.pop()