Python 数据结构与算法——快排

Python 数据结构与算法——选取算法(TopK)

如果说快速选取法所代表的是剪枝式的遍历操作——在递归树中找出一条通往第 k 小元素的路径——那么,快速排序就是一个完全遍历操作,它会针对每个 k (但不是从 0, …, n-1 的顺序)提出一个解决方案,找出序列最小的元素,第二小的元素,一直找下去,并将这些元素放到各自合适的位置上,序列就完成排序了。

def partition(seq):
    pi, seq = seq[0], seq[1:]
    lo = [x for x in seq if x <= pi]
    hi = [x for x in seq if x > pi]
    return lo, pi, hi

def quicksort(seq):
    if len(seq) <= 1: return seq               # 递归的过程中会有 len(seq) == 0 的情况出现
    lo, pi, hi = partition(seq)
    return quicksort(lo) + [pi] + quicksort(hi)

你可能感兴趣的:(算法)