Python-快速排序

import random
# import sys
# sys.setrecursionlimit()  # 修改递归最大深度


def partition(li, left, right):
    tmp = li[left]
    while left < right:
        while left < right and li[right] >= tmp:  # 从右边找比tmp小的数
            right -= 1  # 从左走一步
        li[left] = li[right]  # 把右边的值写到左边的空位上
        print(li, "right")
        while left < right and li[left] <= tmp:
            left += 1
        li[right] = li[left]  # 把左边的值写到右边空位上
        print(li, "left")
    li[left] = tmp  # 把tmp归位
    return left


def quick_sort(li, left, right):
    if left < right:  # 至少两个元素
        mid = partition(li, left, right)
        quick_sort(li, left, mid-1)
        quick_sort(li, mid+1, right)


li = [random.randint(1, 20) for i in range(20)]
print(li, "原列表")
quick_sort(li, 0, len(li)-1)
print(li, "排列后")

 

posted on 2023-02-01 14:28  夜黎i  阅读(18)  评论(0)    收藏  举报

导航