Divide & conquer
使用DC算法,要进行如下两个步骤
举一个简单例子,数组[2,4,6]相加用递归的形式实现,首先要搞清楚递归的base case:如下图:就是只有一个元素或者没有元素的情境。
然后,在写递归,就是把问题分解,直到变成base case,如下图所示:
对于数组形式的递归,base case 一般为空数组或者只有一个元素的数组。
quicksort case
quicksort 就是快速sort一个数组,以下是代码实现
def quicksort(arrary):
if len(arrary)==2:
return arrary
else:
pivot = arrary[0]
less = [item for item in arrary[1:] if item<=pivot]
great = [item for item in arrary[1:] if item>pivot]
return quicksort(less)+pivot+quicksort(great)