算法吧-快速排序

#排序思路:默认第一为最小,右小默认移左边,左小默认移右边,最后默认放回,不断操作为最快
def quick_sort(li,left,right):
    while left<right:
        tmp=li[left]     #把第一位数当作对比的数
        while left<right and li[right]>=tmp:   #从右边最后一个数开始,小于对比数放左边
            right-=1             #指针往左移
        li[left]=li[right]       #移动
        while left<right and li[left]<=tmp:    #同理,左边的往右移动
            left+=1
        li[right]=li[left]
    li[left]=tmp			#把中间那个数放回它该放的位置,即左边小于它,右边大于它
    return left

def _quick_sort(li,left,right):
    if left<right:
        mid = quick_sort(li,left,right)
        _quick_sort(li,left,mid-1)
        _quick_sort(li,mid+1,right)

li=[random.randint(0,100) for _ in range(10)]
_quick_sort(li,0,len(li)-1)
print(li)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值