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)

 

本章小结 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值