概述
分治算法(Divide and Conquer, D&C),是一种经典的递归式解决问题的方法,分而治之,是其主要思想。
适用场景:
1)找到终止条件(基线条件),停止递归,条件越简单越好;
2)能将问题分解,不断地缩小问题规模,直至满足终止条件。
快速排序是采用分治思想的经典排序算法。
Talk is cheap, show me code.
将通过几个简单的小例子帮助理解,均使用python实现。
例题1
求数组之和,例如x = [1,2,3,4], sum(x)=10
首先,进行子问题分解,问题被逐渐分解成规模越来越小的子问题,分解的过程即为递归的过程。
sum([1, 2, 3, 4]) = 1 + sum([2, 3, 4])
sum([2, 3, 4]) = 2 + sum([3, 4])
sum([3, 4]) = 3 + sum([4])
sum([4]) = 4 + sum([])
然后,考虑终止条件。
if len(x) ==