Python算法:快速排序

快速排序因为排序效率在同为O(N*logN)的几种排序方法中效率较高,所以常常被采用。python

该方法的基本思想是:数组

1.先从数列中取出一个数做为基准数。app

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。less

3.再对左右区间重复第二步,直到各区间只有一个数。ui


如今经过一个实例来讲明快排。spa

好比有一个数组:code

6 2 4 5 3

第一步:选取一个基准数,不要被这个名词吓到了,你能够把它看做是一个比较大小的数,由于排序就是比较大小,排序

好比我选取最后一个数3为基准数,依次把数组的数和3比较,比3小的放左边,比3大的放右边,这样有以下结果:class

2 3 6 4 5

第二步:判断区间个数,通过第一步后左边区间只有一个数了,没有数字再和它比较了,所以不须要重复操做,右边区间还有:效率

6 4 5

重复第一步,选取5做为基准数,获得比较结果:

4 5 6

这样左右两边区间都只有一个数了,这就标志着排序完成,最后把全部区间合并就获得排序结果:

2 3 4 5 6


Python代码

def quick_sort(array):
    less = []; greater = []
    if len(array) <= 1:
        return array
    pivot = array.pop()
    for x in array:
        if x <= pivot: less.append(x)
        else: greater.append(x)
    return quick_sort(less) + [pivot] + quick_sort(greater)
list = [2,4,2,6,7,8,1]
print quick_sort(list)
[1, 2, 2, 4, 6, 7, 8]

相比C、C#、JAVA之类的是否是简单多了^.^

相关文章
相关标签/搜索