2018-04-15 快排

2018-04-15  本文已影响16人  开子的私家地

递归版:
思路:以中点作为pivot,切分成left、mid、right左中右从小到大三部分,并且对left、right做递归。
最后得到升序序列。

    def qucik_sort(s):
        length = len(s)
        if length < 2:
            return s
        pivot = s[length/2]
        left = [i for i in s if i < pivot]
        mid = [i for i in s if i == pivot]
        right = [i for i in s if i > pivot]
        # print pivot,left,right
        # print 'sorting'
        return qucik_sort(left)+mid+qucik_sort(right)

——————————————————————————————
2018-04-17
上面的偷懒了,利用了python自带的列表推导式。
经典的快速排序是由quicksort和partition两部分组成

def quciksort(seq):
    if len(seq) <= 1: return seq
    lo, pi, hi = partition(seq)
    return quciksort(lo) + [pi] + quicksort(hi)
def partition()

partition函数部分略,有空补充
参考: python algorithms,p138

上一篇 下一篇

猜你喜欢

热点阅读