快速排序的python实现

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

本文地址:https://blog.csdn.net/albert_fifth/article/details/110455611