递归版:
思路:以中点作为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
网友评论