赞
踩
博主在市面上发现了很多,很多有关书算法的书籍,但是真正能够让初学者易懂的算法书籍,只是一点点,以下我讲以
Aditya Bhargava写的一本关于算法的入门书籍,为参考,这本书非常的优秀,浅显易懂,图文并茂!带你走进算法的世界,要知道,作为一名优秀的程序员,不会算法是不行滴。
书籍的地址,可以给博主留言,也可以加我QQ或者微信,欢迎你和我一起来探讨,编程世界的秘密
所谓的算法是一组完成任务的指令,这个任务可以是有关数学的,也可以是有关功能的实现,
算法是计算机的灵魂
具体说来,我们可以实现编写跟着用户的AI系统,编写推荐系统,当然了还有NP的一些问题。不过呢,准备好掉头发了吗?让我们一起来掉头发吧!!
所谓的二分查找算法,是一个非常简单的入门算法,它的目的是加快数据的查找
它指的是如果你在n个要查找的元素中,需要找一个元素,那么你最多需要x步。
特别需要你注意的是:我们这选用python做为编程语言,python简单易学
博主比较忙,简单的代码就不敲了,复杂一些的会带着大家敲一下
难不倒我们伟大的程序员,这里哟一种叫做大O表示法,一张图告诉你
例子1:比如下面的例子,有助于你的理解,
- 假设还是二分查找和普通的算法,查找一次需要用到1毫秒ms,从n个中找一个元素,n=100时,普通算法需要的时间是100ms,而二分查找需要的时间约等于7ms,当n=1000时,普通算法是10s,二分查找需要耗费14ms,
-
- 有此我们可以使用以下的公式来表示,它们运行的速度
-
我们这里的()括号里的数表示的操作数,表示执行这个算法需要操作多少步,或者说操作多少次。
例子2:现在有一个需求,在一张纸上面绘制16个各种,那么如何用大O表示法,来观察它的运行速度呢?
- 算法1:一个一个的去画,你需要画16次,
- 算法2:二分的去画,只需要画4次,这个4怎么得来的呢?我们能不能用数学表示出来呢?当然可以,看我们的公式
所以在例子二中,算法1,2用大O表示法就是
再说一遍,我们的运行速度指是运算的时间的增量
再来一个简单的例子:
还是要绘制16个各种,如果现在要求绘制的1024的格子呢?我们如何用以上的5种表示法表示出来?
这是一个著名的计算机科学领域的问题,它充分的表示了最后一种大O表示法的运行速度
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。