python 快速排序-递归

快速排序 递归

快速排序就是在一个数组中选择一个数作为基准,我们遍历这个数组中其他的元素,将小于和等于这个基准数的元素放入一个新的数组,将大于这个基准数的元素放入另一个新元素,得到的新数组进行如上的操作,直到这个数组里面只有一个元素或为空时,将所有的数组拼接起来就是排序好的数组。
递归在我看来就是函数调用自己
在下面的实现代码中,我选择了数组中的中间数作为基准数

def qs(b):
    if len(b) < 2:
        return b
    high =  len(b)-1
    mid = int(high/2)
    left =[]
    right =[]
    midValue = b.pop(mid)  #需要注意的是选了基准一定要在遍历这个素组之前删除这个基准元素,否则当第一轮比较大小时
    #若right数组没有元素,left数组和原数组一样,陷入死循环
    for i in range(len(b)):
        if b[i]>midValue:
            right.append(b[i])
        else:
            left.append(b[i])
    return qs(left)+[midValue]+qs(right)
a=[5,23,46,3,24,5]
print(qs(a))

执行结果如下
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值