• Python利用递归函数和列表推导式实现快速排序


    Python代码:

    """
    基础知识:递归函数(函数在内部调用自身,这个函数就是递归函数)
    
    计算1-N的整数之和
    
    SUM = N + (N-1) + (N-1-1) + ... + 1
    
    """
    
    def fact(n):
        if n==1:
            return 1
        return n + fact(n - 1)
    
    n = 10
    s = fact(10)
    print("
    1-%s的整数之和是:%s" % (n,s))
    
    
    """
    基础知识:列表推导式(通过for循环判断是否符合条件的方式从A列表中推导出B列表)
    
    取出M以下的偶数
    
    例如11以下偶数有:0,2,4,6,8,10
    
    """
    
    m = 11
    arr = [x for x in range(0, m) if x%2 ==0]
    print("
    %s以下偶数有:%s" % (m,arr))
    
    """
    利用递归函数和列表推导式实现快速排序
    
    快速排序的处理逻辑:
    1、选择1个数为基准(例如第1个数)
    2、将待排序的数与逐个基准比较,分割成小于等于基准和大于基准的两部分
    每部分重复以上1、2步骤
    
    本例中:
    1、以第1个数4为基准
    2、得到第1部分,小于等于4的数组[1,2,4,0]
    3、得到第2部分,大于4的数组[6,9,8,7,5]
    4、分别对两部分数组递归
    注意:第1部分+基准+第2部分 是每次排序后的结果
    
    """
    
    def quickSort(lst):
        if len(lst) <= 1:
            return lst
        # 以第一个数
        left = [l for l in lst[1:] if l<=lst[0]]
        right = [r for r in lst[1:] if r>lst[0]]
        return quickSort(left) + lst[0:1] + quickSort(right)
    
    lists = [4, 6, 9, 1, 8, 7, 2, 5, 4, 0]
    print("
    排序前: %s
    " % lists)
    print("排序后: %s" % quickSort(lists))

    输出结果:

    E:pythonalgorithm>python3 quickSort.py
    
    1-10的整数之和是:55
    
    11以下偶数有:[0, 2, 4, 6, 8, 10]
    
    排序前: [4, 6, 9, 1, 8, 7, 2, 5, 4, 0]
    
    排序后: [0, 1, 2, 4, 4, 5, 6, 7, 8, 9]

    =====结束=====

  • 相关阅读:
    蓝桥杯---打印回型嵌套(简单递归)
    蓝桥杯---分酒
    蓝桥杯---简单试题集锦
    蓝桥杯---黑洞数
    2013蓝桥杯B组 预赛试题
    2012蓝桥杯预赛--取球博弈
    2012第三届蓝桥杯预赛题
    C中的动态开辟(malloc)
    文件的输入输出
    hdoj 1233 还是畅通工程
  • 原文地址:https://www.cnblogs.com/sam11/p/8337431.html
Copyright © 2020-2023  润新知