新手入门 算法书籍推荐

公众号设立以来,很多同学都在问如何入门、提高,以及有什么好的算法书籍可以学习。这周空闲时间我就大概在网上整理了一下,由于每个人的性格、学习习惯都不一样,不能针对个人情况来推荐,所以这里给的算法书籍仅做参考哦。

另外需要注意的是,这里给的书籍路线更偏向于普通意义的学习,而不仅仅是针对算法竞赛,公众号前期还是主要针对大学刚入门的同学,这样对于公众号来说,也能做到由浅入深,自成体系,我自己也是温故知新,后面会慢慢加深内容。

书籍语言一般是C或者C++语言,因此在学习下面这些书籍时,希望你能够已经掌握了C语言的基础知识,后面公众号也将陆续简单的补上C语言的学习和回顾,这样对于连C语言都不熟的萌新,也可以在这里多看多提问。

好了,让我们开始吧!

1

数据结构与算法分析:C语言描述(适合入门)

这本书相对于算法导论要简单一些,更适合入门。算法导论其实有比较强的理论性,看起来比较吃力。

《数据结构与算法分析:C语言描述》内容简介:书中详细介绍了当前流行的论题和新的变化,讨论了算法设计技巧,并在研究算法的性能、效率以及对运行时间分析的基础上考查了一些高级数据结构,从历史的角度和近年的进展对数据结构的活跃领域进行了简要的概括。由于《数据结构与算法分析:C语言描述(原书第2版)》选材新颖,方法实用,题例丰富,取舍得当。《数据结构与算法分析:C语言描述》的目的是培养学生良好的程序设计技巧和熟练的算法分析能力,使得他们能够开发出高效率的程序。从服务于实践又锻炼学生实际能力出发,书中提供了大部算法的C程序和伪码例程。

2

算法设计与分析基础(适合入门)

作者基于丰富的教学经验,开发了一套对算法进行分类的新方法。这套方法站在通用问题求解策略的高度,能对现有的大多数算法都能进行准确分类,从而使本书的读者能够沿着一条清晰的、一致的、连贯的思路来探索算法设计与分析这一迷人领域。本书作为第2版,相对第1版增加了新的习题,还增加了“迭代改进”一章,使得原来的分类方法更加完善。

3

算法引论:一种创造性方法(适合入门)

和普通的算法书不同,这本书从创造性的角度出发——如果说算法导论讲的是有哪些算法,那么算法引论讲的就是如何创造算法。结合前面的算法设计与分析基础,这本书把能解决的算法问题数量扩大了一个数量级。

4

算法竞赛 |信息学奥赛一本通(算竞入门)

AlphaWA同学推荐的入门书籍,网上没有PDF版本,自己去淘宝买喽。

5

算法竞赛 |算法竞赛进阶指南(算竞进阶)

新书没有PDF哦。

6

算法竞赛 |刘汝佳算竞系列

经典系列。

《算法竞赛入门经典(第2版)》是一本算法竞赛的入门与提高教材,把C/C++语言、算法和解题有机地结合在一起,淡化理论,注重学习方法和实践技巧。

7

编程原本(高级)

非常奇特的一本算法书籍。

本书提供了有关编程的一种与众不同的理解。其主旨是,实际的编程也应像其他科学和工程领域一样基于坚实的数学基础。本书展示了在实际编程语言(如C++)中实现的算法如何在最一般的数学背景中操作。例如,如何定义快速求幂算法,使之能使用任何可交换运算。使用抽象算法将能得到更高效、可靠、安全和经济的软件。

这不是一本很容易读的书,它也不是能提升你的编程技能的秘诀和技巧汇编。本书的价值是更根本性的,其终极目标是提升你对编程的洞察力。要想从中大获裨益,你需要从头到尾认真学习:阅读代码,证明引理,完成练习。到结束之时,你将看到如何把这里讨论的演绎方法应用到你的程序中,保证你做出的软件部件能一起工作,并表现出它们所应该表现的行为。

8

C语言接口与实现(高级)

强烈推荐,后面我也会慢慢看这本书(对于工程实践有着非常的意义)。

本书概念清晰、实例详尽,是一本有关设计、实现和有效使用C语言库函数,掌握创建可重用C语言软件模块技术的参考指南。书中提供了大量实例,重在阐述如何用一种与语言无关的方法将接口设计实现独立出来,从而用一种基于接口的设计途径创建可重用的API。

本书是所有C语言程序员不可多得的好书,也是所有希望掌握可重用软件模块技术的人员的理想参考书,适合各层次的面向对象软件开发人员、系统分析员阅读。

9

算法导论(高级)

入门后必看。

O

计算机程序设计艺术

等你觉得自己快超神的时候用这本书清醒一下就好。本人太穷,就买了第一卷,至今只看到开头:P

大概就推荐这几本书吧,入门主要看前面一两本就好了,等看完了再看后面的,慢慢来。

我大学入门看的是严蔚敏的《数据结构》,感觉还可以,也算是比较经典的书籍。大学教材一般也没啥问题,重点是不管看什么算法书籍,一定要做课后习题,一定要做课后习题,一定要做课后习题!!

另外网上还有很多比较轻松的入门书籍,比如《啊哈算法》《大话算法》《算法图解》等等,但是个人认为如果不是感觉自己非常萌,还是不大推荐这种不是很系统严谨的书籍,看起来轻松了,但是会漏掉很多细节。对于一些比较深的知识,如果通过记住一个形象的画面去理解,以后再碰到类似问题时,就会产生依赖走向误区。这样对于思维的培养甚至可能是有害的。就比如说大学物理老师说爱因斯坦的相对论,我至今只记得一个简单比喻,那就是开心的时候时间过得快,难过的时候时间过得慢,这样每次想到相对论,就会尝试用这个比喻去理解,但是这是非常浅薄的。

另外还有一本Java的《算法 第4版》,如果不介意语言,也可以看看。

希望大家在学习的路上一帆风顺!!Fighting~

噢噢噢噢,还有一点网盘资料(小编我可是费了好多力气才收集完整!),公众号里输入:“书籍”或者“book”,就可以在下载上面说的几本书。

嗯,就酱。

温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180819G1CSA300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券