快速排序法 python实现

首轮排序,flag是标准,小 就是比标准小,大就是比标准大,l[i],l[j]

小,小,小,l[i](小),大,大,大,l[j],...

l[i]=l[i+1]变大,然后和l[j]交换

l=[1,3,2,7,5,6,3,9,4,6]
def fist_sort(l):
    flag=l[-1]
    i=-1
    for j in range(len(l)-1):
        if l[j]>flag:  #j比i早,按照步长1在递增,如果跳过比标记位大的就保留在l[i]右边
            pass
        else:
            i+=1    #如果判断遇到比标记位小,此时调换前i已经+1,l[i]是属于右边的大数的,调换l[i]和l[j],大小数交换
            temp=l[i]
            l[i]=l[j]
            l[j]=temp
    print(l)  #第一轮排序已经结束
    temp=l[-1]   #i+1就是中间位
    l[-1]=l[i+1]
    l[i+1]=temp
    return i+1
fist_sort(l)

首轮解决后就可以开始递归


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值