算法的本质是什么?程序员如何学好算法?这⼏年来,⼩灰⼀直在⽤漫画的形式分享算法知识,每⼀次所分享的,都是⼀个具体的算法知识点。
今天,让我从宏观的⾓度来讲⼀讲,算法到底是什么?如何来学好算法。
1. 算法是什么
所谓算法,指的是解决实际问题的⼀系列⽅法。
很多⼈以为,算法是⼀个新词汇,只和计算机有关系。
其实,算法的历史⾮常悠久,跟⼈类的⽣产⽣活有着密切的关系。
⽐如,在公元前500多年,古希腊数学家泰勒斯,利⽤⼀根⽊棍测量出了埃及胡夫⾦字塔的⾼度。
南北朝时期,中国数学家祖冲之利⽤割圆术近似求解圆周率。
他们所使⽤的⽅法,都可以称为算法。
不太了解这两个故事的⼩伙伴,可以去温习⼀下中⼩学课本。
说完了古代的事情,我们再来说⼀说计算机当中的算法。
计算机当中的算法,本质就是⼀系列程序指令,⽤以解决特定的运算和逻辑问题。
2. 基础算法和专业领域算法
按照专业程度来划分,算法可以分为基础算法和专业领域算法。
所谓专业领域算法,也就是服务于特定领域的算法。
⽐如在2016年,⾕歌的AlphaGO战胜⼈类围棋冠军,背后是⼈⼯智能算法。
我们刷抖⾳、快⼿的时候,刷到各种你感兴趣的短视频,背后是推荐算法。
在⼀些游戏当中,我们能看到的⾮常酷炫的3D效果,背后是3D图形渲染算法。
上⾯说的这些都属于专业领域算法,由相应的算法⼯程师来研究和开发。
如果⼤家对某个特定领域的算法有兴趣,可以专门去学习,但正所谓术业有专攻,这样的算法并不需要每⼀个程序员都去掌握。
⽽所谓的基础算法,则是所有的程序员都应该掌握的关键知识。⼤学⾥计算机专业所学习的数据结构与算法这门课,讲授的就是基础算法。
3. 基础算法解决的问题
基础算法,可以解决哪些问题呢?
程序员培训机构去到极客时间⾸先,是解决运算问题。
有⼈说了,运算不就是算算数吗?这还不简单?
其实还真不简单。例如求出两个数的,要做到效率的极致,确实需要好好想⼀想。
再⽐如计算
其次,还可以解决查问题。
在⼀组有序的整数数列当中,我们想要最快的或者在⼀篇⽂章当中,想要
同时,算法也可以解决排序问题。
在很多情况下,我们需要把⼀些⽆序的元素按照顺序进⾏排列。
⽐如浏览电商⽹站的时候,我们希望按照商品价格从低到⾼来排序。浏览学⽣成绩单的时候,我们希望按照学⽣成绩从⾼到低排序。
这就要⽤到各种各样的。
最后,算法也可以帮助寻最优决策。
当我们⾯对复杂的问题时候,需要⼀步⼀步做出选择,从⽽达到⼀个整体最优的结果。
这时候,某些算法可以帮助我们做出正确的决策,⽐如、⽐如
4. 学习算法有什么⽤
可能有⼈说了,我只要安⼼写好项⽬代码不就完了吗?我⼲嘛⾮要学习这些个算法呢?
如果你能够满⾜于在⼀家⼩公司,踏踏实实地做⼀个增删改查程序员,每个⽉拿个⼀两万⼯资的话,那没问题。
但如果你想要进⼊⼤⼚,想要成为⼀个真正优秀程序员,你还是需要学好算法的。
为什么呢?
⾸先,懂算法的程序员能写出更⾼效的代码。
虽然我们在实际⼯作当中,⼤多数时候不需要去直接实现某个算法,但是我们需要知道⾃⼰正在使⽤的类库、接⼝的底层算法是什么样的,采⽤的数据结构是什么样的,从⽽在合适的场景下使⽤合适的⼯具。
其次,⼤⼚⾯试过程中,往往会考察算法。衡量⼀个程序员是否优秀,不是看他有没有硕⼠博⼠学历,也不是看他熟悉多少种框架,⽽是看他的“内功”是否精神。⽽我们程序员的内功,就是算法和数据结构的运⽤能⼒。
5. 如何更好地学习算法
那么,我们怎么来提升⾃⼰的算法能⼒呢?
我认为,要提升算法能⼒,我们需要从基础和实战两个⽅向分别提升。
怎么学习算法基础知识呢?
我们可以通过看书,看⽹上的视频课程,来了解常⽤的各种算法和数据结构原理。
⼊门级别的书,⽐较推荐程杰⽼师的《⼤话数据结构》,以及我⾃⼰出版的系列。进阶级别的书,推荐看看《算法4》、《算法导论》。
课程的话,推荐极客时间王争⽼师的《数据结构与算法之美》,讲的⾮常全⾯。
怎么提升实战能⼒呢?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论