《算法导论》还是《数据结构与算法分析: C 语言描述》

2017-03-07 08:02:28 +08:00
 peneazy

野生程序员一枚,硕士毕业后才学的前端,昨天去一网易美团级别的公司面高级前端,本来自己会写 4 、 5 种排序和搜索算法,没想到考官出了个类似搜索变体的算法题来考我,自己一下子蒙了,写了个复杂度最差的。

已经决定在现在的公司再磨炼个一年左右,把计算机基础打好,从算法开始。市面上有两本 JS 方面的算法书,自己当时也是看的这个,不过感觉书的内容不深刻,决定看算法的经典书,不知道各位对上面提到的 2 本书推荐哪个。

9901 次点击
所在节点    程序员
56 条回复
ltm
2017-03-07 19:45:01 +08:00
都看过,推荐《数据结构, C 语言描述》
shijingshijing
2017-03-07 20:51:56 +08:00
算法导论不建议直接看书,有个 ppt ,是 MIT 讲课用的,先翻这个,不懂的再仔细看书。

其实新手不推荐看算法导论,主要是压力太大了,那么厚一本,而且都是伪代码,看半天看不懂或者花了好长时间看懂了发现效率怎么这么低,很容易产生挫折感。

建议还是看 java 或者 C++的算法书,最好是不太关注太底层的实现的,专注方法本身,算法跟数学一样,本来是很有意思的东西,但是弄不好就会产生挫折感,并不是你笨,而是没有找到合适的方法,适合自己的方法。

所有与算法相关的,我都建议先看那种直接撸代码能跑出效果来的,然后自己慢慢调,这样会有持续的成就感,这点很重要,要有持续的激励。
peneazy
2017-03-07 20:55:15 +08:00
@shijingshijing 感谢你详细的建议。你这么一说,想起了高中那会儿做算法题,根本不知道这东西和 cpu 、内存有关系,纯粹就是好玩,像脑筋急转弯那种感觉
peneazy
2017-03-07 20:56:44 +08:00
peneazy
2017-03-07 21:01:11 +08:00
回复的人太多了,不一一感谢了。正在看那本竞赛书,如获至宝,没有废话,拿起键盘就是干
shijingshijing
2017-03-07 21:12:07 +08:00
@peneazy 是的,我开始就是看的 C ,从链表开始就要应对底层的指针,我还是从嵌入式转过来的,当初微机原理,计算机架构, x86 汇编基础都还可以,看起来都觉得麻烦,主要是需要应付很多底层实现,但事实上算法应该更侧重于方法本身,他的确是需要一点底层的知识,但更重要的是方法,特别是到了后期学图论,运筹学,优化以及图形学,图像处理方面,其实跟底层没啥关系了,很多高阶算法都是在 Matlab 里面做的,只是在应用的时候,对性能有要求,才会用 C/C++去实现。

其实算法就是算法,而算法的实现,有 Matlab(高阶抽象语言,最接近人类语言)实现, Java/C++/C 实现,以及 FPGA/VHDL 实现,理论上同一个算法, Matlab 实现性能最低,但是最方便; FPGA 性能最高,但实现难度最大。
kmdd33
2017-03-08 00:51:12 +08:00
@peneazy 到底是哪本竞赛书?链接发一下?具体英文名称
dlsflh
2017-03-08 01:01:49 +08:00
想知道硕士读的啥…
peneazy
2017-03-08 05:06:36 +08:00
@kmdd33 回复里有
peneazy
2017-03-08 05:07:22 +08:00
@dlsflh 非计算机专业
jimzhong
2017-03-08 09:07:05 +08:00
两本都看过。《算法导论》采用伪代码,更偏向理论,更深入。《数据结构与算法分析》是 CS@ZJU 数据结构课教材,算法分析部分不如前者。
jiongxiaobu
2017-03-08 09:37:09 +08:00
CLRS 好啊 知其所以然
seki
2017-03-08 09:45:35 +08:00
也可以考虑刷刷题,比如 codewars , leetcode 这样的
tieshu
2017-03-08 11:12:06 +08:00
算法导论。。。 这部太过教科书了!写得很晦涩,很容易看崩溃。推荐《算法》第四版 红色封面这本,不过是 java 语言写,但都是一些基础语法,有编程基础的不难理解。
mutalisk
2017-03-08 12:31:12 +08:00
这两本都不错
yongSir
2017-03-18 22:11:42 +08:00
不明白那么多人推荐
算法第四版
真的都是认真看过的吗?

还仅仅是因为图多名字拽



不做推荐
自己哪个能看的进去就看哪个

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/345464

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX