c/c++的算法及数据结构的书求推荐

2015-06-05 23:25:36 +08:00
 durami

希望是有中文版的。

1149 次点击
所在节点    C
11 条回复
Wockee
2015-06-05 23:28:56 +08:00
数据结构与算法分析:C语言描述(原书第2版)
onemoo
2015-06-06 10:28:35 +08:00
同时还有一本《数据结构与算法分析 : C++描述》
lijianying10
2015-06-06 10:46:17 +08:00
楼上说的的确非常有用,但是,大概看眼也就行了。

现在研究以前人写的算法给工作打底还可以,但是Intel CPU调优手册还是要看的。不然给你XeonCPU你都不会用。
http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html

MKL不说啥了
https://software.intel.com/en-us/articles/intel-math-kernel-library-documentation

IPP不说啥了
https://software.intel.com/en-us/articles/intel-integrated-performance-primitives-documentation

也许你提这个问题说明您是个初学者,但是初学者能站在什么样的高度去学习是很重要的。
FrankHB
2015-06-06 14:22:32 +08:00
@lijianying10 为什么关于C/C++算法,就需要参考侧重性能的具体实现呢?不管是不是初学者,如果根本没机会erformance tuning,研究这些材料投入和产出是不是会坑读者呢。即便是有这些需要,看这些之前,是不是先了解一些常见编译器选项和意义更实用呢?
lijianying10
2015-06-06 16:20:20 +08:00
@FrankHB
我在3L的回答只代表我个人的观点,不代表这就一定是正确的观点。
在1L 2L 推荐的数目中我感觉看看就行:了解基础算法大概有什么是怎么搞的。最多动动手就好。
在IPP中有非常多Intel调优好的基础算法,需要看看了解一下,在开发中的确会用到的。
在MKL中,很多数学算法都有实现,看看Manual有点印象工作会用到的。
以上两个库在实际工作中:对于解码器,语音处理,信号处理 等都有调优好的直接拿来就用的工具放在那里。
Intel Optimization Manual中,是介绍如何良好的使用Intel编译器来编写高性能程序的,当然也包括编译器Flag的调试啦。

回答您的问题:
1. 在实战中如果拿着数据结构的数来挑战一个具体的高性能的底层应用不是不可以,可能比较费劲。
2. Performance tuning我认为是数据结构与算法分析的核心内容。
3. 投入这些精力看材料之后会对当前Intel为主导的服务器结构有更深入的了解。产出的程序当然会好很多啦。
4. 编译器使用是第一份材料中的重点内容。

@durami
其实这三个Manual并不是什么超级难的Manual
Intel 的文档质量是非常高的。
我也希望楼主能多从并行的角度来了解算法写算法。
毕竟传统的书籍都是串行算法,不适用当前的云时代了。

最重要的,我是不建议啃书本的,我推荐的材料只需要Scan即可,


最后希望能帮到大家。
snnn
2015-06-07 12:48:16 +08:00
我觉得数据结构与算法分析的核心内容是:分析这个问题是否有解、解是否唯一、这个算法是正确的,算法复杂度。
FrankHB
2015-06-08 17:40:37 +08:00
@lijianying10 我对先前内容的正确性本身没有异议。但我不同意“毕竟传统的书籍都是串行算法,不适用当前的云时代了”这个说法——即便算法本身用不上,算法分析的一般方法、和实现结合的许多惯用法仍然都是相同或类似而可以参照的;而专门讲解并行算法的文献大多不会有耐心复述一遍这些较为经典的内容。
我同意你先前的回答可能会对不少人有帮助,不过从问题来看(正如你所说的“也许你提这个问题说明您是个初学者”),恐怕题主难以利用这些资源。
然而面向非初学者,问题涵盖的范围可以很大,方向也有很多,也并非一定侧重高性能计算。
所以我建议先缩小一下范围(或许可以让题主明确一下感兴趣的问题领域),以便更能有针对性。
durami
2015-06-09 22:11:22 +08:00
@FrankHB 怎么说,就是假期想学点什么,目前大概也就二级的水平…
FrankHB
2015-06-10 00:20:16 +08:00
@durami 把二级忘掉,返工。
要算法之类的也不用太关注具体语言。
durami
2015-06-10 01:34:47 +08:00
@FrankHB 想了下说法不太对,二级是去年的事,上学期学了数据结构,看了严蔚敏的那本教材,考试过后却感觉在程序里不太会用,所以想要看点东西学习下算法
FrankHB
2015-06-13 01:53:20 +08:00
@durami 也不见得非得看书。了解一下算法分析的常识,然后找些自己有兴趣的实际问题解决。剩下的基础迟早会被逼得会用。

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

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

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

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

© 2021 V2EX