Python快速排序

2020-03-11  本文已影响0人  黑咔
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)  # 往右递归
上一篇 下一篇

猜你喜欢

热点阅读