递归中的分而治之的思想

D&C(divide and conquer)工作原理:

(1) 找出简单的基线条件;

(2) 确定如何缩小问题的规模,使其符合基线条件。

二分查找用的就是分而治之算法。
用分而治之的思想,递归实现了数组的求和与数组的最大值,快速排序代码如下:

#数组求和
def arrSumDC(list):
    if len(list) == 1:
        return list[0]
    else:
        return list.pop(0) + arrSumDC(list)
#求数组最大值
def arrMaxNumDC(list):
    if len(list) == 2:
        if list[0] > list[1]:
            return list[0]
        else:
            return list[1]
    else:
        if list[0] > list[1]:
            list.pop(1)
        else:
            list.pop(0)
        return arrMaxNumDC(list)
#快速排序
def quicksort(array):
    if len(array) < 2:
        return array
    else:
        pivot = array[0]
        less = [i for i in array[1:] if i <= pivot]
        greater = [i for i in array[1:] if i >pivot]
        return quicksort(less) + [pivot] + quicksort(greater)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 分治策略 本文包括分治的基本概念二分查找快速排序归并排序找出伪币棋盘覆盖最大子数组 源码链接:https://gi...
    廖少少阅读 1,903评论 0 7
  • 一.原理: 1. 分治算法的基本思想就是:将一个规模为N的问题分解为K个规模较小的子问题(K <= N),这些子问...
    林大鹏阅读 9,132评论 3 5
  • 孩子:兜男2010.7 兜的第一个30天目标:晚上9:35熄灯上床 完成情况: 本月收获: 1、基本养成定点熄灯习...
    liq_3541阅读 156评论 0 0
  • 金秋十月,天高气爽,正是旅游的好时节。我们部门的同事聚在一起,商量着趁国庆放假,来一次集体行动,大家七嘴八舌的议...
    林尔姑娘阅读 220评论 0 0
  • 旁观者y__y阅读 61评论 0 0