本书旨在易于理解。每当引入新概念时,都会立即解释或告诉您何时解释。核心概念通过练习和多种解释得到强化,这样您就可以检查您的假设并确保您遵循。
这本书充满了插图,让您更容易地可视化这些概念。
本书内容经过精心策划。没有必要写一本涵盖所有排序算法的书。所包含的所有算法都是实用的。它们在软件工程师的工作中很有用,它们为更复杂的主题提供了良好的基础。快乐阅读!
本书的前三章奠定了基础:
第 1 章——您将学习您的第一个实用算法:二分查找。您还将学习使用Big O 表示法分析算法的速度。整本书都使用Big O 表示法来分析算法的慢或快。
第 2 章——您将了解两种基本的数据结构:数组和链表。这些数据结构在整本书中都有使用,它们被用来制作更高级的数据结构,如哈希表(第 5 章)。
第 3 章——你将学习递归,这是一种被许多算法(如第 4 章介绍的快速排序)使用的便捷技术。
以我的经验,Big O 表示法和递归对于初学者来说是具有挑战性的话题。所以我放慢了速度,在这些部分上花费了额外的时间。
本书的其余部分介绍了具有广泛应用的算法:
解决问题的技巧——在第 4、8 和 9 章中介绍。如果您遇到问题并且不确定如何有效地解决它,请尝试分治法(第 4 章)或动态规划(第 9 章)。或者你可能意识到没有有效的解决方案,而是使用贪心算法得到一个近似的答案(第 8 章)。
哈希表——在第 5 章中介绍。哈希表是一种非常有用的数据结构。它包含一组键值对,例如一个人的姓名和他们的电子邮件地址,或者一个用户名和相关的密码。很难夸大哈希表的有用性。当想解决一个问题时,开始的两个计划是“可以使用哈希表吗?”和“可以将其建模为图形吗?”
图算法——在第 6 章和第 7 章中介绍。图是一种对网络进行建模的方法:社交网络、道路网络、神经元或任何其他连接集。广度优先搜索(第 6 章)和 Dijkstra 算法(第 7 章)是寻找网络中两点之间最短距离的方法:您可以使用这种方法来计算两个人之间的分离度或到目的地的最短路线.
K-最近邻(KNN)——在第 10 章中介绍。这是一个简单的机器学习算法。您可以使用 KNN 构建推荐系统、OCR 引擎、预测股票价值的系统——任何涉及预测价值(“我们认为 Adit 会给这部电影打 4 星”)或对对象进行分类(“那封信是问”)。
下一步——第 11 章讨论了 10 种算法,这些算法将有助于进一步阅读。