Python-快速排序

#coding:utf-8
def quicksort(list):
    if len(list)<2:
        return list
    else:
        midpivot = list[0] #基准值
        lessbeforemidpivot = [i for i in list[1:] if i<=midpivot]
        biggerafterpivot = [i for i in list[1:] if i > midpivot]
        finallylist = quicksort(lessbeforemidpivot)+[midpivot]+quicksort(biggerafterpivot)
        return finallylist

print quicksort([5, 2, 8, 6, 4, 9, 7, 3, 1])

快速排序的原理:

快速排序(Quick Sort)使用分治法策略
它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

快速排序流程
(1) 从数列中挑出一个基准值。
(2) 将所有比基准值小的摆放在基准前面,所有比基准值大的摆在基准的后面(相同的数可以到任一边);在这个分区退出之后,该基准就处于数列的中间位置。
(3) 递归地把"基准值前面的子数列"和"基准值后面的子数列"进行排序。


举例:

将以下数据升序排列:5, 2, 8, 6, 4, 9, 7, 3, 1

 

1.先确定一个基准数,然后按照比较规则,如本例是升序排列,则将比基数大的放到右边,比基数小的放到左边。

2.接下来各边重复步骤1,直到全部排序完毕。

初始:

一轮:

二轮:         

 

三轮:                                    

...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章