python简单实现快速排序

test_list = [49, 38, 65, 78, 20, 9, 100, 77, 62, 34]
def once_sort(array, lef, rig):
    """

    :param array: 数组,列表
    :param lef: 最左侧索引
    :param rig: 最右侧索引
    :return: 基准所在位置
    """
    # 基准
    base = array[lef]
    # lef=rig时会结束循环
    while lef < rig:
        # 从右到左,找到第一个小于等于基准的数,并array[rig]赋值给array[lef]
        while lef < rig and array[rig] > base:
            rig -= 1
        if lef < rig:
            array[lef] = array[rig]
        # 从左到右, 找到第一个大于基准的数,并将array[lef]赋值给array[rig]
        while lef < rig and array[rig] <= base:
            lef += 1
        if lef < rig:
            array[rig] = array[lef]
    # lef=rig时将基准赋给索引所在位置
    array[lef] = base
    # 返回索引
    return lef


def quick_sort(array, low, high):
    if low < high:
        index = once_sort(array, low, high)
        # 递归排序基准左侧
        quick_sort(array, low, index-1)
        # 递归排序基准右侧
        quick_sort(array, index+1, high)


quick_sort(test_list, 0, 9)
print(test_list)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值