简洁的快速排序

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)
上一篇下一篇

猜你喜欢

热点阅读