# 每执行一次partition函数都可以实现将某个数左边都比这个数小右边都比这个数大 defpartition(data, left, right): tmp = data[left] while left < right: while left < right and data[right] >= tmp: # 从右向左找小于tmp的数放到左边空位置 right -= 1 data[left] = data[right] # 将右边小于tmp值得数放到左边空位置 while left < right and data[left] <= tmp: # 从左向右找到大于tmp的值放到右边空位置 left += 1 data[right] = data[left] # 将右边大于tmp值得数放到右边空位置 data[left] = tmp return left
tmp = list[0] # 临时变量 可以取随机值 left = [x for x inlist[1:] if x <= tmp] # 左列表 right = [x for x inlist[1:] if x > tmp] # 右列表 return quick(left) + [tmp] + quick(right)