【Python_036】算法 | 快速排序

上回书说到选择排序,本篇博客介绍快速排序
参考书籍:《算法图解》

在介绍选择排序之前,先介绍递归的概念。

递归

递归函数组成部分:

  1. 基线条件(函数不再调用自己,从而避免形成无限循环)
  2. 递归条件(函数调用自己)
def fact(x):
    if x == 1: #基线条件
        return 1
    else:
        return x*fact(x-1) #递归条件
    
fact(5)
快速排序
思路:
  1. 选择数组第一个数为基准(pivot)

  2. 依次将数组中的数与基准比较大小,将整个数组分为比基准小的与比基准大的两组数

  3. 对两组数分别重复上两步操作(递归思想),直到每组数只剩下一个数为止

  4. 将排序后的小组依次拼接起来即成为新的有序数组

代码实现
def quicksort(array:list)->list:
    if len(array)<2:
        return array
    else:
        pivot = array[0]
        less = [i for i in array[1:] if i<=pivot]
        more = [i for i in array[1:] if i>pivot]
        return quicksort(less) + [pivot] + quicksort(more)

quicksort([3,2,1,5,])

'''
[1,2,3,5]
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值