简洁的快速排序
2019-06-15 本文已影响0人
WhyDoWeLive
def quick_sort(arr, begin, end):
if begin >= end:
return
move_left = begin
move_right = end
while move_left < move_right:
# 要先从右侧找,否则move_left最终可能指向比arr[begin]大的值
while move_left < move_right and arr[move_right] > arr[begin]:
move_right -= 1
while move_left < move_right and arr[move_left] <= arr[begin]:
move_left += 1
arr[move_left], arr[move_right] = arr[move_right], arr[move_left]
arr[begin], arr[move_left] = arr[move_left], arr[begin]
quick_sort(arr, begin, move_left-1)
quick_sort(arr, move_left+1, end)