【Python实现快排】 -- 2019-08-09 12:12:36
原文: http://106.13.73.98/__/117/ 挖坑法思路: 取一个元素p(第一个元素),使元素p归位; 列表被p分成两部分,左边的数一定不大于p,右边的数一定不小于p; 递归完成排序。 Python代码示例: lst = [5, 7, 4, 3, 1, 2, 9, 8] def quick_sort(d, l, r): if l < r: m = partition(d, l, r) quick_sort(d, l, m - 1) quick_sort(d, m + 1, r) def partition(d, l, r): # 挖坑法,函数执行结束后,左边的数一定不大于p,右边的数一定不小于p p = d[l] while l < r: while l < r and d[r] >= p: r -= 1 d[l] = d[r] while l < r and d[l] <= p: l += 1 d[r] = d[l] d[l] = p return l quick_sort(lst, 0, len(lst) - 1) 《算法导论》中的快速排序: class QuickSort(object): __INSTANCE = None def __new__(cls, *args, **kwargs): """单例模式""" if not cls.__INSTANCE