一行语句实现快排

忽然想起来前段时间看《算法图解》的时候get到的新知识——快排,固然这个知识应该不会有程序员不知道吧?书里给出的python代码很是的简洁,因而我利用Python的特性,进一步简化改写,最终给出了一个一行完成的快排实现,以下:python

def qsort(array):  
    return array if len(array)<2 else qsort([x for x in array[1:] if x < array[0]]) + [array[0]] + qsort([x for x in array[1:] if x >= array[0]])

简单讲解一下思路:
若是 array 只有 0 个或者 1 个元素,那么直接返回,不然递归返回三个 list 的拼接:
第一个 list 为小于 array[0] 的元素,第二个数组为 array[0] 自己,第三个数组为大于array[0]的元素,这即为快排的基本思想。固然选择 list 的第一个元素做为基准并不是为快排的最优策略,不过也是一种比较常见的办法。程序员

相关文章
相关标签/搜索