def quick_sort(array, left, right):
if left < right:
base_index = division(array, left, right)
quick_sort(array, left, base_index - 1) # 对小于基准值的再次进行分割
quick_sort(array, base_index + 1, right) # 对大于基准值的再次进行分割
def division(array, left, right):
base_value = array[right]
i = left
for j in range(left, right): # 遍历除最后一个元素的其他元素
if array[j] <= base_value: # 和基准值对比
array[i], array[j] = array[j], array[i] # 小于基准值,则替换到list前
i += 1 # 替换过后,往后移一位,准备接受下次替换
array[i], array[right] = array[right], array[i] # 遍历完成后,将基准值放到所有小于它的值之后
return i # 返回基准值的index,用于分割列表
if __name__ == '__main__':
a = [random.randint(1, 1000) for i in range(50)]
quick_sort(a, 0, len(a) - 1)
print a