首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

想自学算法,用什么书好呢,该如何解决

2012-05-02 
想自学算法,用什么书好呢本人学过C/C++、汇编、数据结构,想研究一下算法。用什么书好啊?《算法导论》适合我吗?

想自学算法,用什么书好呢
本人学过C/C++、汇编、数据结构,想研究一下算法。用什么书好啊?《算法导论》适合我吗?学算法应该注意什么呢?
各位前辈指教,非常感谢

[解决办法]
想学算法??

看看这里,超全……经典……

http://zhuyingqingfen.download.csdn.net/
[解决办法]
你要是只注意思想的话,多买几本书,数据结构有时候一本书讲不清楚.

尤其是算法的伪代码的,要熟记一些伪代码,或者模式.
用自己的语言去写.几分钟内写出框架.

到具体写的时候不论用你熟悉的哪种语言都可以快速实现.

比如深搜的模式,就这么简单,可以解决很多问题.

 DFS(起点,结果,路径)
{
if(结束条件){比较结果;return}
DFS(新起点,新结果,新路径)

}

广搜要稍微复杂一点

1.BFS(图 g,顶点 s)
2.{
3. 队列 Q;
4.
5. for(顶点 u in g.所有顶点) u.状态=未访问;
6. s.状态 = 准备访问;
7. s.访问深度 = 0;
8. Q.入队(s);
9. while( Q.非空() )
10. {
11. 顶点 u = Q.出队();
12. for(顶点 v in u.所有邻接点)
13. {
14. if(v.状态 == 未访问)
15. {
16. v.状态 = 准备访问;
17. v.访问深度 = v.访问深度+1
18. v.前趋点 = u;
19. Q.入队(v);
20. }
21. }
22. u.状态 = 已访问;
23. }
24.}




比如合并排序
Sort(A,p,r)
if(p<r) then q=(p+r)/2
Sort(A,p,q)
Sort(A,q+1,r)
Merge(A,p,q,r)

Merge(A,p,q,r)
.........

按字典生成排列法
用笔抄写伪代码,并且涂画思考,是加强记忆和理解的好办法.

只需要废纸就可以,涂完,记在脑袋里,扔掉.

技不压身.

10行以内的常用递归伪代码要熟练掌握:

求最大公约数
GCD(a,b)
if b=0
then return a
else
return GCD(b,a%b)
-------------------------------------------

借助最大公约数求最小公倍数
  步骤:   
一、利用辗除法或其它方法求得最大公约数;  
二、 最小公倍数等于两数之积除以最大公约数。

--------------------------------------------

二分查找/折半搜索

BSearch(目标,头,尾)
目标存在,就返回.
否则,头或尾折半
BSearch(目标,要么新头,要么新尾)


------------------------------------------------------
用自己的语言修改一下,去掉没用的话,比较好.

如果你有一个100页+的本子,记满了伪代码,并且,任何一页你都可以随时撕掉重写出来,那么你就可以参加算法比赛了.

现在,几大公司都钟情于ACM/ICPC竞赛选手,据说月薪很高哦.

我现在也在招人,欢迎懂算法的人来,我认为,有核心竞争力的东西,需要算法.
[解决办法]
一个旧帖子



1. CLRS 算法导论
算法百科全书,只做了前面十几章的习题,便感觉受益无穷。

2. Algorithms 算法概论
短小精悍,别据一格,准经典之作。一个坏消息: 同算法导论,该书没有习题答案。好消息:习题很经典,难度也适中,只需花点点时间自己也都能做出来。不好也不坏的消息:我正在写习题的答案,已完成前三章,还剩九章约二百道题,顺利的话二个月之后发布。另有中文版名《算法概论》,我没看过,不知道翻译得怎么样。如果有心的话,还是尽量看原版吧,其实看原版与看中文版花费时间不会相差很大,因为大部分时间其实都花费在做习题上了。

3. Algorithm Design 算法设计
很经典的一本书,很久之前看的,遗憾的是现在除了就记得它很经典之外其它都忘光了。
4. SICP 计算机程序的构造和解释
六星之书无需多言,虽然这不是一本讲算法的书,但看完此书有助于你更深入的理解什么是递归。我一直很强调习题,看完此书后你至少应该做完前四章的太部分习题。否则那是你的遗憾,也是作者的遗憾。

5. Concrete Mathematics 具体数学
有人说看TAOCP之前应该先弄清楚这本书的内容,要真是如此的话那我恐怕是看不到TAOCP了。零零碎碎的看了一大半,很多东西都没有时间来好好消化。如果你是刚进大学不久的本科生,有着大把的可自由支配时间,那你幸运又幸福了,花上几个月时间好好的读一下此书吧,收获绝对大于你的期望值。

6. Introduction to The Design and Analysis of Algorithms 算法设计与分析基础
很有趣的一本算法书,有许多在别的书上找不到的趣题,看完此书绝对能让你大开眼界,实在是一本居家旅行,面试装逼的必备佳作。

7. 编程之美--微软技术面试心得
虽说是一本面试书,但如果把前面十几页扯掉的话,我更愿意把它看作是一本讲解题思维的算法小品。在书中,作者通常是给出一个平常解法,然后再一次又一次的优化改进,你可以很清楚的看到基本的算法设计思想是如何得到运用以解决实际问题的。如果你已经有了一些算法的基础,看完本书应该能使你的算法应用能力得到一定的提高。另外,本书生动有趣,也同样适合于初学者。

8. Fundamentals of Algorithmics 算法基础
也是很久之前在学校图书馆借来看的,内容记不太清楚了,只隐约记得此书的动态规划章节犹为出彩。应该是很经典的一本书,个人以为足以和算法导论等所谓当世经典平分秋色,但是怎么好像被人提到的不多,或许是我孤陋寡闻了。

9. How to solve it 怎样解题
二十世纪最伟大的数学思想家之一波利亚的力作,讲一般性的解题方法:怎么认识问题,怎么转换问题,怎么解决问题,如何在问题中得到启发,如何找到一个通往答案的方向。

10. Programming interviews exposed 程序员面试攻略
一本消遣之作。个人以为要比国内的某“XXX面试宝典”纯粹一些,至少也有一些启发性的内容,而不单单是面试题解库。

11. Programming Pearls 编程珠玑
学习算法不仅需要像Alogrithms,算法导论这样的重量级的内功心法,像《编程之美》、《编程珠玑》这样的轻量级的轻功身法也必不可少。前些年网上不是很流行像“给你10亿个数,找到最大的n个”或者“给你10亿个数,找出现次数最多的那个数”之类的百度面试题吗?看了此书你就知道怎么解决了。相比于《编程之美》来说,本书中的示例技巧性略低一些,但是也更有实际应用价值一些。

12. 算法艺术与信息学竞赛


如果算法导论是九阳神功,那这本无疑就是九阴真经。本书是专为参加一些诸如ACM之类程序设计比赛的同学而写的,江湖人称“黑书”。里面讲的都是一些在编程比赛中常用的算法、数据结构,以及一些数论和计算几何等。我虽然并不搞竞赛,但也从此书中受益颇多。

13. An Introduction to Probability Theory and Its Applications
准备看的,现在才发现概率论有多么重要,可惜本科的时候没有好好学。前不久一个同学问我个问题,我半天弄了一个程序给他,他说:这里就不是相关系数么,Excel一下就完事!我晕,我还真不知道那就是相关系数。

14. Numerical Analysis
这本的作者是Richard L. Burden,J. Douglas Faires
数值分析,讨论各种数值算法,比如插值、拟合、积分、微分方程的求解、线性和非线性方程组求解等。准备详细看。

15. TAOCP 计算机程序设计艺术
传说中的TAOCP,说的人多,看的人少。TAOCP四卷堪称是算法藏经阁中的易筋经或者是少林七十二绝技。天下武学,尽出少林,天下算法,尽出TAOCP也。这点你可以顺便翻开一本算法书看看他的引用文献就知道了。我只读了第四卷的部分章节,前三卷暂时还没敢看,还在读书计划表中被无限期搁置。


[解决办法]
《算法导论》,必然的

热点排行