Grokking algorithms(第四章)quicksort

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)

本章小结 

猜你喜欢

转载自blog.csdn.net/Gussss/article/details/95462593