#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,直到全部排序完毕。
初始:
一轮:
二轮: