美文网首页
Python快速排序

Python快速排序

作者: 黑咔 | 来源:发表于2020-03-11 15:02 被阅读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)  # 往右递归

相关文章

网友评论

      本文标题:Python快速排序

      本文链接:https://www.haomeiwen.com/subject/ydiiectx.html