python实现快速排序

一,原理

        快速排序是基于冒泡排序的基础的一种效率较高的一个排序方法。排序的思想是:在所给的数组中选择一个参照数(一般是选取左边第一个为参照数),然后把数组中小与参照数的放左边,大于参照数的放右边。然后对参照数左边的数组和右边的数组继续这样的照做,直到数组有序。

二:代码

#归位
def Partition(li,start,end):
    tmp=li[start]#定义左边的第一项位参照项
    while start < end:
        while start < end and li[end] >= tmp:#从右边开始寻找
            end-=1#向左找
        li[start]=li[end]#比tmp小的数放到左边
        while start < end and li[start] <= tmp:#从左边开始找
            start+=1#向右找
        li[end]=li[start]#比tmp大的数放到右边
    li[start]=tmp
    return start
#快速排序
def quick_sort(li,start,end):
    if start < end:
        mid=Partition(li,start,end)#获取数组的参照之索引
        quick_sort(li,start,mid-1)#对参照值左边进行快速排序
        quick_sort(li,mid+1,end)#对参照值右边进行快速排序

三:执行

        

li=[6,3,4,8,9,7,1,2,5]
quick_sort(li,0,len(li)-1)
print(li)

结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晗14

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值