返回 登录
2

你一定能看懂的算法基础书《算法图解》

  • 你一定能看懂的算法基础书
  • 代码示例基于Python
  • 400多个示意图,生动介绍算法执行过程
  • 展示不同算法在性能方面的优缺点
  • 教会你用常见算法解决每天面临的实际编程问题

图片描述

本书易于理解,没有大跨度的思维跳跃,每次引入新概念时,都立即进行诠释,或者指出将在什么地方进行诠释。核心概念都通过练习和反复诠释进行强化,以便你检验假设,跟上步伐。

书中使用示例来帮助理解。我的目标是让你轻松地理解这些概念,而不是让正文充

阅读路线图

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

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

各种符号。我还认为,如果能够回忆起熟悉的情形,学习效果将达到最佳,而示例有助于唤醒记忆。因此,如果你要记住数组和链表(第2章)之间的差别,只要想想在电影院找座位就坐的情形。另外,不怕你说我啰嗦,我是视觉型学习者,因此本书包含大量的图示。

本书内容是精挑细选的。没必要在一本书中介绍所有的排序算法,不然还要维基百科和可汗学院做什么。书中介绍的所有算法都非常实用,对我从事的软件工程师的工作大有帮助,还可为阅读更复杂的主题打下坚实的基础。祝你阅读愉快!

目录

第 1 章 算法简介
第 2 章 选择排序
第 3 章 递归
第 4 章 快速排序
第 5 章 散列表
第 6 章 广度优先搜索
第 7 章 狄克斯特拉算法
第 8 章 贪婪算法
第 9 章 动态规划
第 10 章 K最近邻算法
第 11 章 接下来如何做
练习答案

评论