蠢萌算法,瞬间提升编程力一万点...

普通程序员,不学算法,也可以成为大神吗?

对不起,这个,绝对不可以。

可是算法好难啊~~看两页书就想睡觉……

所以就不学了吗?就一直当普通程序员吗?

如果有一本算法书,看着很轻松……又有代码示例……又有讲解……

怎么会有那样的书呢?

哎呀,最好学了算法人还能变得很萌……

这个……要求是不是太高了呀?

哈哈,有的书真的能满足所有这些要求哦!

来,看看这本书有多可爱——

蠢萌算法,瞬间提升编程力一万点...

二分查找萌一个


1~100,阿喵同学选了个数,记在心里

让鼻子同学猜


蠢萌算法,瞬间提升编程力一万点...


如果像下面这样猜……

鼻子同学很有可能失去阿喵同学

因为跟他一起玩耍实在是……

太无聊了!


蠢萌算法,瞬间提升编程力一万点...


但是,如果这样猜……


蠢萌算法,瞬间提升编程力一万点...蠢萌算法,瞬间提升编程力一万点...蠢萌算法,瞬间提升编程力一万点...


鼻子同学很快就猜对了

阿喵同学会觉得鼻子同学很聪明

而且好像很懂她哦~

蠢萌算法,瞬间提升编程力一万点...

把一列元素拦腰一截,再拦腰一截,再拦腰一截……

这个就是二分查找咯~

Python代码来一发——

蠢萌算法,瞬间提升编程力一万点...

看不清?点击代码,看大图

蠢萌算法,瞬间提升编程力一万点...蠢萌算法,瞬间提升编程力一万点...

递归算法萌一个


奶奶有个大盒子

可以上锁的那种


蠢萌算法,瞬间提升编程力一万点...


打开大盒子,里面有很多小盒子

奶奶说,大盒子的钥匙就在某个小盒子里


蠢萌算法,瞬间提升编程力一万点...


这些小盒子里还有更小的盒子

……

你要如何找到钥匙呢?

你可以这样:


蠢萌算法,瞬间提升编程力一万点...


也可以这样:


蠢萌算法,瞬间提升编程力一万点...


第一种方法好像比较聪明

但是第二种方法更简单


蠢萌算法,瞬间提升编程力一万点...

第一种方法叫做简单查找,第二种方法叫做递归。

在编程中,递归非常常见,事实上,很多算法都用到了递归思想。

不过呢,也有人觉得递归很麻烦。

你怎么看?

简单查找是这样的——

蠢萌算法,瞬间提升编程力一万点...

递归是这样的——

蠢萌算法,瞬间提升编程力一万点...

看不清?点击代码,看大图

蠢萌算法,瞬间提升编程力一万点...蠢萌算法,瞬间提升编程力一万点...

背包问题萌一个


有一个贼,带着一个包……

能装4磅重的东西


蠢萌算法,瞬间提升编程力一万点...


他可以偷的东西只有以下几件

请问,

他拿走哪几样比较合算?


蠢萌算法,瞬间提升编程力一万点...蠢萌算法,瞬间提升编程力一万点...


东西反正也不多,

要不然就一轮一轮地试?


蠢萌算法,瞬间提升编程力一万点...

蠢萌算法,瞬间提升编程力一万点...


这次当然没问题……

可是贼也不能保证

每次只想偷这么点东西

花那么多时间试来试去的

不怕被人发现吗?


蠢萌算法,瞬间提升编程力一万点...

说得简单一点,背包问题就是——东西你都想要,但是不能都要,那么怎样尽量多拿点。

而且要快!要快!要快!重要的事情说三遍!

背包问题有很多种解决办法,每一种都对应一种算法。把这个问题想清楚了,你至少可以成为半个算法高手。

蠢萌算法,瞬间提升编程力一万点...


来源:中生代技术

原文链接


上一篇:好程序员Java培训分享零基础学Java能行吗 有哪些难点


下一篇:DirectSound中关于IID_IDirectSound无法解析的问题