算法如何学

来源:互联网 发布:fpga经典书籍 知乎 编辑:程序博客网 时间:2024/05/19 07:07

http://www.fx114.net/qa-130-89511.aspx(腾讯后台面试)

http://www.zhihu.com/question/19981544

http://blog.jobbole.com/67348/(达到他的入门水平)

看了些算法方面的学习经验帖子:

一个总原则,学习要科学地学习,讲求方法,适合自己的方法,考研的书也是大部头的,你也一本一本地啃完了!坚持,是最重要的

一种说法是:不要一上来看《算法导论》,学习应该循序而渐进:

看《算法》,看视频,

1Robert Sedgewick在Coursera上出了一系列算法视频教程,把一个算法以动画的形式展现出来,非常适合新手。课程名字就叫Algorithm,普林斯顿大学的,分为Part 1和Part 2,看视频一边看一边做笔记,看完一个单元跟着把代码写一遍。看完整个教程之后把所有算法都默写一遍,忘记的算法复习一遍。

2刷题:“cracking the coding interview

3刷完这些有点信心了,就去leedcode上给自己浇浇冷水,看看面经。

4MIT有这门课的公开课,百度搜索 MIT:算法导论,课本就是算法导论,一边看一边认真完成这门课的课后题。
一定不要小看这些课后题,往往是很多算法的关键所在,理解了这些课后题,你才能够说真正的懂了这个算法,只是会写代码根本不算学会。

5   http://visualgo.net/ 》看得云里雾里的时候,这个项目能帮助你直观地理解各种算法,以动画形式展现数据结构和算法的网站: VisuAlgo - visualising data structures and algorithms through animation
以动画的形式展现数据结构和算法,同时还有代码的运行过程,详细到每一个步骤

刚接触算法时,我看的是《啊哈!算法》

7网易公开课的课程,给上链接
数据结构和算法小甲鱼的

8Coursera_网易公开课 上参加一些算法的课,Stanford,Princeton,MIT等学校的都很好,不同的学校开的算法课侧重方向有所不同,例如Princeton 算法,第一部分的课程主页强调实现和测试,适合大一和大二的学生参加;Standford 算法设计与分析,第一部分的课程主页 强调建模,证明从而去创造算法,适合大三大四的学生参加。这两门课相辅相成

9在整个过程,可结合《算法设计》这本书一起学,《算法导论》看不懂内容的去《算法设计》上看,两本互补

到这儿已经没有什么方法而言了,就是多练习,弥补不懂的知识,继续练习,练习题可参考网上的一些算法题集,如leetcode或者ACM题或者各大互联网公司笔试面试题。个人推荐两本书籍:编程珠玑 (豆瓣)编程之美 (豆瓣),两本书都有一定难度,但是如果前几个阶段都能做好的话,你获得的一定是趣味。

10训练类的网站

http://www.51nod.com/onlineJudge/problemList.html#!groupId=-1;没有目的性去学习,往往效率不高.

http://poj.org/

对着里面的问题,先自己思考,尝试编程解决,如果不能解决,就翻翻算法书,想想为什么.
如果还是不行,那就上网看看别人有没有解决掉,怎么做,看看他们用到什么算法,比对着,然后进一步自己去实现.
有时候对于算法的问题的实现,你在实现之前也许会卡住,但是在编程过程中,随着你的锻炼和熟练度的提高.会有那么一天你觉得什么都通了.

Leetcode或Topcoder上面找一些题做

11看《大话数据结构》,看懂某个算法或数据结构,然后试着自己(硬着头皮)亲自写代码把它实现

些以算法应用为主的书籍看看,培养兴趣,例如数学之美,编程珠玑之类。在此基础上再系统学习,效果会好一些。

12推荐可以在Coursera上看《算法(第四版)》作者Robert Sedgewick的公开课 Algorithms (Part I, Part II),里面包含有:
1).视频
2).小测验
3).用强大的在线评分系统评分的编程作业
4)."Job interview questions".
里面的slides也可以提供下载

13《Algorithms In C》

总结下来三条路:

先看一些一些较浅显的书,偏应用的书;把书中的用C++全部实现一遍,stl

结合视频来看;这一条比较适合我:视频-》书,课后题-》刷题,有重点有针对性的去联系最重要的常考点,自己去写-》编程之美,offer,编程珠玑;

网络资源,一些好的训练网站,应用导向,不会的再去查找算法导论一书,网上一些网站的题刷,反补反查书籍的学习质量

http://www.zhihu.com/question/19981544


0 0