资讯中心 Info
当前位置:酷叮猫 > 资讯中心 >
Python 快速排序
发布日期:2018-09-15 阅读次数:
此次,我们来讲一下排序问题,之前我们也许接触过冒泡排序,选择排序等等算法.但是这一次,我们来学习一下速度更快的方法,也是很实用的一个方法.在讲快速排序之前,我们需要知道递归,所谓递归函数就是在自己的函数体内部又调用了自己的函数.当然这种函数需要有一个停止条件,否则稍不注意就变成了死循环,同时弄不好也会造成内存溢出,导致程序崩溃.
 
这里,我们的停止条件就是列表的元素数量为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()
 
课程体系
通知公告