def quick_sort(arr, left, right):
if left > right: # 递归出口
return
base = arr[left] # 以左边的数为基准数
l = left
r = right
while l != r:
# 从右往左找,如果找到比基准数大的就停止循环,否则r--
while l < r and not (base > arr[r]):
r -= 1
# 从左往右找,如果找到比基准数小的就停止循环,否则l++
while l < r and not (base < arr[l]):
l += 1
# 交换
arr[l], arr[r] = arr[r], arr[l]
# 如果基准数比中间元素大,就进行交换
if base > arr[l]:
arr[left], arr[l] = arr[l], arr[left]
quick_sort(arr, left, r - 1) # 往左递归
quick_sort(arr, l + 1, right) # 往右递归
网友评论