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("\r\n1-%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("\r\n%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("\r\n排序前: %s\r\n" % lists) print("排序后: %s" % quickSort(lists))
输出结果:
E:\python\algorithm>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]
=====结束=====