快速排序_python

 

def quicksort(ls,result):
    if len(ls)<=1:
        result+=ls
        # return result
    else:
        flag=ls[0]
        left=[x for x in ls[1:] if x<=flag]
        quicksort(left,result)
        result.append(flag)
        right=[x for x in ls[1:] if x>flag]
        quicksort(right,result)
        return result

print(quicksort([2,0,1,0,111],[]))

[0, 0, 1, 2, 111]
[Finished in 0.5s]

 

总结:1.以第一个元素为基准

           2.为小于基准值元素集合和大于基准值元素进行排序

           3.result收集排序结果

简洁版:

def quicksort(ls):
    if len(ls)<=1:return ls
    return quicksort([left for left in ls[1:] if left <ls[0]])+[ls[0]]+quicksort([right for right in ls[1:] if right>ls[0]])

print(quicksort([2,0,1,0,111]))

[0, 1, 2, 111]
[Finished in 0.5s]

注意:[ls[0]]

 

posted on 2017-10-11 21:30  sayhihi  阅读(173)  评论(0编辑  收藏  举报