算法图解
上QQ阅读APP看书,第一时间看更新

路线图

本书前三章将帮助你打好基础。

❑ 第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种算法。