Python 快速排序 请求指导

#Python 快排 双循环
不知道那里出问题了

img


# 快排 双边循环
def _quick_double(li, left, right):
    start = left
    pivot = li[start]
    while left != right:
        # 右侧只大于 pivot,小于 pivot放在原位
        while left < right and li[left] <= pivot:
            left += 1
        # 左侧只要小于 pivot,大于 pivot放在原位
        while left < right and li[right] > pivot:
            right -= 1
        li[left], li[right] = li[right], li[left]
    li[start], li[left] = li[left], li[start]
    return left


def quick_sort_double(li, left, right):
    if left >= right:
        return
    q = _quick_double(li, left, right)
    quick_sort_double(li, left, q-1)
    quick_sort_double(li, q+1, right)


def _quick_double(li, left, right):
    start = left
    pivot = li[start]
    while left <= right:
        # 右侧只大于 pivot,小于 pivot放在原位
        while left <= right and li[left] <= pivot:
            left += 1
        # 左侧只要小于 pivot,大于 pivot放在原位
        while left <= right and li[right] > pivot:
            right -= 1
        if left <= right:
            li[left], li[right] = li[right], li[left]
    li[start], li[left-1] = li[left-1], li[start]
    return left-1