递归中的分而治之的思想

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)

你可能感兴趣的:(递归中的分而治之的思想)