本书示例丰富,图文并茂,以简明易懂的方式阐释了算法,旨在帮助程序员在日常项目中更好地利用算法为软件开发助力。前三章介绍算法基础,包括二分查找、大 O 表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括 :面对具体问题时的解决技巧,比如何时采用贪婪算法或动态规划 ;散列表的应用 ;图算法 ;K 最近邻算法。本书适合所有程序员、计算机专业相关师生以及对算法感兴趣的读者。
我因为爱好而踏入了编程殿堂。Visual Basic 6 for Dummies教会了我基础知识,接着我不断阅读,学到的知识也越来越多,但对算法却始终没搞明白。至今我还记得购买第一本算法书后的情景:我琢磨着目录,心想终于要把这些主题搞明白了。但那本书深奥难懂,看了几周后我就放弃了。直到遇到一位优秀的算法教授后,我才认识到这些概念是多么地简单而优雅。几年前,我撰写了第一篇图解式博文。我是视觉型学习者,对图解式写作风格钟爱有加。从那时候起,我撰写了多篇介绍函数式编程、Git、机器学习和并发的图解式博文。顺便说一句,刚开始我的写作水平很一般。诠释技术概念很难,设计出好的示例需要时间,阐释难以理解的概念也需要时间,因此很容易对难讲的内容一带而过。我本以为自己已经做得相当好了,直到有一篇博文大受欢迎,有位同事却跑过来跟我说:“我读了你的博文,但还是没搞懂。”看来在写作方面我要学习的还有很多。在撰写这些博文期间,Manning出版社找到我,问我想不想编写一本图解式图书。事实证明, Manning出版社的编辑对如何诠释技术概念很在行,他们教会了我如何做。我编写本书的目的就是要把难懂的技术主题说清楚,让这本算法书易于理解。与撰写第一篇博文时相比,我的写作水平有了长足进步,但愿你也认为本书内容丰富、易于理解。
本书前三章将帮助你打好基础。 第1章:你将学习第一种实用算法——二分查找;还将学习使用大O表示法分析算法的速度。本书从始至终都将使用大O表示法来分析算法的速度。 第2章:你将学习两种基本的数据结构——数组和链表。这两种数据结构贯穿本书,它们还被用来创建更高级的数据结构,如第5章介绍的散列表。 第3章:你将学习递归,一种被众多算法(如第4章介绍的快速排序)采用的实用技巧。根据我的经验,大O表示法和递归对初学者来说颇具挑战性,因此介绍这些内容时我放慢了脚步,花费的篇幅也较长。余下的篇幅将介绍应用广泛的算法。 问题解决技巧:将在第4、8和9章介绍。遇到问题时,如果不确定该如何高效地解决,可尝试分而治之(第4章)或动态规划(第9章);如果认识到根本就没有高效的解决方案,可转而使用贪婪算法(第8章)来得到近似答案。 散列表:将在第5章介绍。散列表是一种很有用的数据结构,由键值对组成,如人名和电子邮件地址或者用户名和密码。散列表的用途之大,再怎么强调都不过分。每当我需要解决问题时,首先想到的两种方法是:可以使用散列表吗?可以使用图来建立模型吗? 图算法:将在第6、7章介绍。图是一种模拟网络的方法,这种网络包括人际关系网、公路网、神经元网络或者任何一组连接。广度优先搜索(第6章)和狄克斯特拉算法(第7 章)计算网络中两点之间的最短距离,可用来计算两人之间的分隔度或前往目的地的最短路径。 K最近邻算法(KNN):将在第10章介绍。这是一种简单的机器学习算法,可用于创建推荐系统、OCR引擎、预测股价或其他值(如“我们认为Adit会给这部电影打4星”)的系统,以及对物件进行分类(如“这个字母是Q”)。 接下来如何做:第11章概述了适合你进一步学习的10种算法。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !