有没有学习算法的好的思路,或者好书?

据说算法是软件的灵魂.

阅读 14.5k
14 个回答

直接复制另一个问题的答案:http://segmentfault.com/q/1010000000095039

原理 入门:《编码:隐匿在计算机软硬件背后的语言

这是一本讲述计算机工作原理的书。

不过,你千万不要因为“工作原理”之类的字眼就武断地认为,它是晦涩而难懂的。作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述得通俗易懂,你丝毫不会感到枯燥和生硬。 更重要的是,你会因此而获得对计算机工作原理较深刻的理解。这种理解不是抽象层面上的,而是具有一定深度的,这种深度甚至不逊于“电气工程师”和“程序员”的理解。

不管你是计算机高手,还是对这个神奇的机器充满敬畏之心的菜鸟,都不妨翻阅一下《编码:隐匿在计算机软硬件背后的语言》,读一读大师的经典作品,必然会有收获。

我推荐Charles Petzold的《编码》。 在这个充满工具和IDE的年代,很多复杂度已经从程序员那“抽取”走了,这本书一本开眼之作。 – hemil

实战 晋升:《编程珠玑

正如自然界里珍珠出自细沙对牡蛎的磨砺,计算机科学大师 Jon Bentley 以其独有的洞察力和创造力,从磨砺程序员的实际问题中凝结出一篇篇不朽的编程“珠玑”,成为世界计算机界名刊《ACM通讯》历史上最受欢迎的专栏,最终结集为两部不朽的计算机科学经典名著,影响和激励着一代又一代程序员和计算机科学工作者。

本书为第一卷,主要讨论计算机科学中最本质的问题:如何正确选择和高效地实现算法。

尽管我不得不羞愧地承认,书中一半的东西我都没有理解,但我真的推荐《编程珠玑》,书中有些令人惊奇的东西。 – Matt Warren

永恒的经典:《代码大全

Steve McConnell 的原作《代码大全》(第1版)是公认的关于编程的最佳实践指南之一, 在过去的十多年间,本书一直在帮助开发人员编写更好的软件。

现在,作者将这本经典著作全新演绎,融入了最前沿的实践技术,加入了上百个崭新的代码示例, 充分展示了软件构建的艺术性和科学性。 McConnell汇集了来自研究机构、学术界以及业界日常实践的主要知识, 把最高效的技术和最重要的原理交织融会为这本既清晰又实用的指南。

无论您的经验水平如何,也不管您在怎样的开发环境中工作,也无论项目是大是小, 本书都将激发您的思维并帮助您构建高品质的代码。

不知道@chenge 是新手还是老手.
新手建议去看数据结构,清华出的一本 绿色书皮的,很多高校用作教材,不错的
如果有一定算法基础,可以去看@lauyoume 推荐的那两本《c算法》,这套书是Robert Sedgewick写的,被誉为算法讲解大师
如果是老手么~~~看Knuth的《计算机编程艺术》,这就不用介绍了吧~~~

你学C的不?看 数据结构与算法分析-C语言实现,书很薄,而且都有最终代码。

http://book.douban.com/subject/113942...

《算法导论》量太多,而且实际代码太少,可能有些人会有点吃力,我一般不建议。

@白开水 推荐的那本不错 那本当初我也看过
我这边还有两本
《C算法 第一卷 基础、数据结构、排序和搜索》
《C算法 第二卷 图算法》
我这边有中文电子书-.- 以前大学搞acm时侯看了一些 那些资料一直保留着。

新手上路,请多包涵

我对算法不是特别感兴趣。
一般多上oj练练手就是。

数学建模
还有那些ACM的算法书 贪心啊 背包啊

新手上路,请多包涵

Algorithms(注释版,中文名《算法概论》),讲得较浅,比较好上手,伪代码
C++的话清华殷人昆的数据结构(用面向对象的方法与C++语言描述)有代码实现,比较完整,但不是系统讲算法的

算法导论,里面的思路蛮清晰的,强烈推荐

除了以上介绍的书,如果英语好,可以看看MIT的算法视频。有时候一个人看书看很长时间才能弄懂的问题,听老师上课说一说,画个图就立马明白了,效果会更好

其实多看看stl或者boost的源码,里面的算法一大堆,直接用或者用来学习都不错的

algorithms java版 - Robert Sedgewick

我的算法是这么学的

1.数据结构,严蔚敏版,是上课的教材。

2.算法概论,看书,做习题,可以找到答案,适合自学。
算法概论,可以看这个书评,http://book.douban.com/review/1325850/
看这本书的时候,需要查资料可以看算法导论。

3.然后按照poj的推荐题目列表,按分类做。 分类可以用这个
http://blog.163.com/aviva_159/blog/static/139797103201012715839881/
做完中级就差不多了,除非你想搞的巨牛。。。

我也说一下我的算法学习过程,目前我正在找工作,至少现在笔试通过率还是很高的
1、重学c语言和数据结构,分别看了《c语言程序设计现代方法》和《数据结构》,很多算法需要数据结构的支持,所以数据结构必须掌握,没基础何谈算法
2、学习《算法导论》,动态规划这上面讲的比较清楚
3、做ACM题目,推荐九度oj平台,目前我在上面ac300+

基本上先做到这些,后面就可以继续自学也就不需要问这种问题了

我觉得结合视频来看,直接看书不知道重点,碰到问题也很难解决。。。

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