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)