快速排序

这种排序大体流程是 :

一串数字 例如3 2 2 3 6 5 4 1

先随机取一个元素 大于等于它的放前面 小于它的放后面 直到各部分只有一个数字(假设每次取第一个数)则第一趟下来

less: 2 2 3 1                         rand:3                               greater :6 5 4

继续分别重复上个步骤

l:2  1  r: 2   g:3                3               l:5 4   r:6   g:null

重复

l:1 r:2   g:null    2     3     3          l:4  r:5  g:null    6

至此 排序完成 1 2 2 3 3 4 5 6

编写思路:

1.确定递归判断停止条件  即数字个数小于2便停止

2.将数字分开,比随机数大的放一边小的放一边 该数放中间

3.调用自身

python3 代码:

from random import *
def  qu(List1):
    if len(List1) < 2:
        return List1
    else:
        a=randint(0,len(List1)-1)
        rand = List1[a]
        del List1[a]
        less = [i for i in List1 if i <= rand]
        greater = [i for i in List1 if i > rand]
        return qu(less) + [rand] + qu(greater)

b = [3,2,2,3,6,5,4,1]
print(qu(b))

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值