此次,我们来讲一下排序问题,之前我们也许接触过冒泡排序,选择排序等等算法.但是这一次,我们来学习一下速度更快的方法,也是很实用的一个方法.在讲快速排序之前,我们需要知道递归,所谓递归函数就是在自己的函数体内部又调用了自己的函数.当然这种函数需要有一个停止条件,否则稍不注意就变成了死循环,同时弄不好也会造成内存溢出,导致程序崩溃.
这里,我们的停止条件就是列表的元素数量为0或为1个时,就不用排序了.否则的话就得找一个中间点做基准,比它小的放在左边的列表,比它大的放在右边的列表.再把它们合并成一个完整的列表。 而只要左右两边的列表数量大于1时,就继续递归排序.
要知道,当我们排序的数列比较短时,还体现不出的它的优势,但是当数据量很大时就会凸显它的优势了.
运行结果如下

[程序代码]
def qsort( alist ):
if len(alist)<2:
return alist
else:
pivot = len(alist)//2
pp = alist.pop(pivot)
leftList = [x for x in alist if x<=pp]
rightList = [x for x in alist if x>pp]
return qsort(leftList)+[pp]+qsort(rightList)
def main():
import random
aa = [x for x in range(100)]
bb = random.sample(aa, 20)
print("="*20+" 排序前 "+"="*20)
print(bb)
print(' '+"="*20+" 排序后 "+"="*20)
print(qsort(bb))
if __name__ == '__main__':
main()


