快速排序

快速排序

算法步骤

  • 找一个基准值,将这个基准值放在正确的位置上,也就是左边的都比它小,右边都比它大,至于左右两边的顺序先不管。
  • 此时数列已经被分为了两个部分,再在左右两边重复第一步,直到数列的顺序被排好。

快速排序

动图演示

快速排序

代码实现

def quick_sort(ls,left,right):
    if left>right: #递归停止的条件
        return 
    cur=ls[left]
    low=left
    high=right
    while low<high:
        if ls[high]>=cur:
            high-=1
        else:
            ls[low]=ls[high]
            while low<high and ls[low]<=cur:
                low+=1
            ls[high]=ls[low]            
    ls[low]=cur
    quick_sort(ls,left,low-1)
    quick_sort(ls,low+1,right)

ls=[63,23,23,67,78,45,23,89,10,19,91,68,10,10,23,100,89,98]
quick_sort(ls,0,len(ls)-1)
print(ls)
# [10, 10, 10, 19, 23, 23, 23, 23, 45, 63, 67, 68, 78, 89, 89, 91, 98, 100]

, 67, 68, 78, 89, 89, 91, 98, 100]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值