![]()
内容推荐 这是一本关于“高级/进阶”算法和数据结构的图书,主要介绍了用于Web应用程序、系统编程和数据处理领域的各种算法,旨在让读者了解如何用这些算法应对各种棘手的编码挑战,以及如何将其应用于具体问题,以应对新技术浪潮下的“棘手”问题。 本书对一些广为人知的基本算法进行了扩展,还介绍了用于改善优先队列、有效缓存、对数据进行集群等的技术,以期读者能针对不同编程问题选出更好的解决方案。书中示例大多辅以图解,并以不囿于特定语言的伪代码以及多种语言的代码样本加以闸释。 学完本书,读者可以了解高级算法和数据结构的相关内容,并能运用这些知识让代码具备更优性能,甚至能够独立设计数据结构,应对需要自定义解决方案的情况。 本书可作为高等院校计算机相关专业本科高年级学生以及研究生的学习用书,也可供从事与算法相关工作的开发者参考。 作者简介 马塞洛·拉·罗卡(Marcello La Rocca),高级软件工程师,全栈工程师,主要研究领域包括算法、机器学习和量子计算。曾就职于Twitter、Microsoft和Apple等公司,从事数据基础设施和应用研究工作。 目录 第1章 初识数据结构 1.1 数据结构 1.1.1 定义数据结构 1.1.2 描述数据结构 1.1.3 算法与数据结构有区别吗 1.2 设定目标:阅读本书后的期望 1.3 打包背包:数据结构与现实世界的结合 1.3.1 抽象化问题 1.3.2 寻找解决方案 1.3.3 拯救大家的算法 1.3.4 打破常规来思考问题 1.3.5 完美的结局 1.4 小结 第一部分 改进基本数据结构 第2章 改进优先队列:d叉堆 2.1 本章结构 2.2 问题:处理优先级 2.3 已知解决方案:让列表保持有序 2.4 描述数据结构API:优先队列 2.4.1 使用优先队列 2.4.2 优先级为何非常重要 2.5 具体数据结构 2.5.1 性能比较 2.5.2 正确的具体数据结构是什么 2.5.3 堆 2.5.4 优先级、最小堆和最大堆 2.5.5 高级变体:d叉堆 2.6 如何实现堆 2.6.1 向上冒泡 2.6.2 向下推动 2.6.3 插入 2.6.4 移除顶部元素 2.6.5 修改 2.6.6 处理重复优先级 2.6.7 堆化 2.6.8 API之外的方法:包含 2.6.9 性能回顾 2.6.10 从伪代码到实现 2.7 用例:找到最大的k个元素 2.7.1 选择正确的数据结构 2.7.2 正确地使用数据结构 2.7.3 代码写起来 2.8 更多的用例 2.8.1 图中的最小距离:Dijkstra算法 2.8.2 更多的图算法:Prim算法 2.8.3 数据压缩:霍夫曼编码 2.9 对分支因子进行分析 2.9.1 是否需要d叉堆 2.9.2 运行时间 2.9.3 寻找最佳分支因子 2.9.4 分支因子与内存的关系 2.10 性能分析:寻找最佳分支因子 2.10.1 剖析 2.10.2 解释结果 2.10.3 堆化的谜团 2.10.4 选择最佳分支因子 2.11 小结 第3章 树堆:使用随机化来平衡二叉搜索树 3.1 问题:多索引 3.2 解决方案:描述与API 3.3 树堆 3.3.1 旋转 3.3.2 一些设计问题 3.3.3 实现搜索方法 3.3.4 插入 3.3.5 删除 3.3.6 去顶、看顶以及修改 3.3.7 返回最小键和最大键 …… 第二部分 多维查询 第三部分 平面图与最小交叉数 |