对于只知道有JAVASCRIPT的菜鸟来说怎么学习算法?

不是科班生,没上过大学,也没去过培训班。现在呢想学习算法,但是网上一看有一本叫《数据结构与算法 JavaScript 语言描述》的用JS实现算法的书,但是网上评价不太好。又没啥好办法。
“学个C,看数据结构啊”
“学习计算机导论啊,学习各种基础啊”
这上面的也是我的方向,但是毕竟现在工作用到的是javascript,所以还是着重于它。至于别的基础,我也只能是穿插的学。不知道有什么好方法呢?

阅读 8.4k
7 个回答

首先,要学什么,就学什么。C语言的书多,详细,但你还要先学C,学了C,平时写代码也不用,曲线救国道路曲折啊

数据结构与算法的知识,不同于学习jQuery,看看文档直接搞。

可能你看完书后也不会用。最好从实际问题出发。

  1. 看到题目要遍历DOM(22课),广度优先深度优先?二叉树?这是个什么东西啊?(一脸的懵比)

  2. 然后Google,看维基百科,搜二叉树的知识(用JS如何实现),哇,原来还有二叉搜索树,栈与队列,先记下来

  3. 看别人代码,自己仿照着写,回到起点,把遍历DOM实现

  4. 抽空看看栈与队列是什么东西,买本书看看

1.发现问题:百度前端技术学院,你可以从十三课做起,这里是我的代码
4.《学习JavaScript数据结构与算法》昨天刚买了这本书,值得一看,适合初学者。

最后,我们本来就没有受过系统的教育,自己看书有时实在看不进去,不如从实际项目出发。共勉!

首先说句现实的话,楼主的提问是个伪命题,既然你是javascript菜鸟,那么学习js算法有什么意义呢?其实算法本和语言没有什么关系,但是用某种语言去实践一些经典算法就必须要对语言本身的api和特性熟悉才能学好!比如js你如果不懂闭包,柯西化,函数式编程等这些概念,不能自己撸一些基本的插件或者工具库,那么你所研究的算法怎么可能说有自己的见解,无非是把别人的代码抄了一遍。另外前端中算法的目的何在,我觉得更多在于优化,一个巧妙的算法肯定是提升了性能,解决了某些实际的问题,而不是只是为了装逼,为了算法而算法。不然算法写得再好,如果其他方面做得不好,比如兼容性处理得不好,在某个地方提升的一丁点优化并没有什么卵用。

不是有意喷楼主,打击楼主积极性,而是善意提醒,如果楼主基础不好,如自己所说菜鸟,建议先把js api大致学习一下,一些特性很熟悉了,然后尝试从某个实际问题入手去学习,比如可以先看看别人提出的一些算法背后解决的问题,然后想想这个问题有没有什么办法,然后再考虑不同算法的实现,不然学得很盲目,我见过一些算法书,写得很好很厚,只是那种一般很少人坚持读完,读完了也不见得短期内技术有什么提升,让学习的人可能并没有什么成就感!

每个人都有自己擅长的领域,没必要别人说要学算法就学算法,也没必要所有人都变成全栈,你开发页面的效率很高,页面做得很漂亮,也是有价值的。

至于学习算法,我以前去网易公开课看过一些,我也是非工科生,计算机基础很差。我觉得看书的话效率比较低而且容易没兴趣,推荐看网上的各种公开课,尤其是国外名校的公开课,一部分科甚至水准远远高于国内院校,算法,计算机理论都有。

如果你能把《javascript权威指南》搞透,你就是大神了。
但是它太过于“官方”,我当时看几十页就看不下去了,后来买的《javascript高级程序设计》,这本书已经来来回回看了近10遍了。
你说的常用算法什么的,里面都有提及。建议先搞定基础,如果你喜欢算法,那么基础扎实后专攻算法也是不错的选择。
总之,凡事讲究循序渐进,切不可急于求成。

leetcode上用js写写题目,每天写一题,每题基本都会涉及一些数据结构,算法的知识,然后再去了解。日积月累下来,你就是大牛了。

好像并没有什么大关系,学习算法主要是思想,语言是工具,能够熟练使用一种语言,就能做一些算法相关的练习,用你会的语言把算法表达出来,学习算法的思想

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏