快速排序的非尾递归python实现

快速排序的非尾递归python实现

快速排序的时间复杂度为O(n log(n)),可以用这种办法来记忆算法:
将当前排列的数字中选出一个数字(例如第一个)为基准flag, 剩下的数字分为两组, 比flag大的, 比flag小的(这部分时间复杂度为O(n)), 分在flag两边. 再对这两边执行同样操作(这部分时间复杂度为O(n log(n)))[因为采用了二分法]

需要注意的是何时可以结束递归: 排列的长度为0, 1时都可以, 这里要仔细分析

代码实现

def qsort (L):
    if len(L):
        l_min = [x for x in L[1:] if x < L[0]]
        l_max = [x for x in L[1:] if x >= L[0]]
        return qsort(l_min) + [L[0]] + qsort(l_max)
    else:
        return []
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值