作品简介

在编写代码时,每位软件专业人士都需要对算法有充分的理解。在这本实用性极强的著作中,作者对一些关键的算法进行了详实的描述,可以有效地提高用各种语言编写代码的质量。

软件开发人员、测试人员和维护人员可以在本书中学会如何使用算法,以创造性的方式解决计算性问题。

本书各章内容前后衔接紧密,环环相扣,用醒目的图表有条不紊地展示了一些核心概念,并对书中介绍的每种算法的性能进行了分析。

George T.Heineman是一位计算机科学教授,在软件工程和算法领域有超过20年的教学经验。他是《算法技术手册》的作者,也是很多O’Reily视频培训课程的讲师,其中包括“Exploring Algorithms in Python”和“Working with Algorithms in Python”。他终身爱好逻辑题和数学智力题,是Sujiken智力游戏(数独的一种变型)和Trexagon智力游戏的发明者。

作品目录

  • 版权声明
  • 内容提要
  • O'Reilly Media,Inc.介绍
  • 业界评论
  • 前  言
  • 本书的目标读者
  • 关于代码
  • 本书所使用的约定
  • O’Reilly在线平台学习(O’Reilly Online Learning)
  • 联系我们
  • 致谢
  • 服务与支持
  • 提交错误信息
  • 扫码关注本书
  • 与我们联系
  • 关于异步社区和异步图书
  • 第1章 解决问题
  • 1.1 什么是算法?
  • 1.2 在一个任意的列表中查找最大值
  • 1.3 对关键操作进行计数
  • 1.4 可以预测算法性能的模型
  • 1.5 在一个随机列表中查找两个最大值
  • 1.6 锦标赛算法
  • 1.7 时间复杂度和空间复杂度
  • 1.8 总结
  • 1.9 挑战练习
  • 第2章 分析算法
  • 2.1 使用实验模型预测性能
  • 2.2 乘法可以更快
  • 2.3 性能分类
  • 2.4 渐进性分析
  • 2.5 对所有操作进行计数
  • 2.6 对所有字节进行计数
  • 2.7 关上一扇门,打开另一扇门
  • 2.8 二分数组搜索
  • 2.9 几乎和π一样简单
  • 2.10 一石二鸟
  • 2.11 综述
  • 2.12 曲线拟合与上下界的比较
  • 2.13 总结
  • 2.14 挑战练习
  • 第3章 更好的散列,更适意的人生
  • 3.1 值与键相关联
  • 3.2 散列函数和散列码
  • 3.3  (key,value) 对的可散列结构
  • 3.4 使用线性探查法检测和解决冲突
  • 3.5 用链表实现分离链表
  • 3.6 从链表中删除一个数据项
  • 3.7 评估
  • 3.8 增长的散列表
  • 3.9 分析动态散列表的性能
  • 3.10 完美散列
  • 3.11 对 (key,value) 对进行迭代
  • 3.12 总结
  • 3.13 挑战练习
  • 第4章 堆起来!
  • 4.1 最大二叉堆
  • 4.2 插入 (value,priority) 对
  • 4.3 删除具有最高优先级的值
  • 4.4 用数组表示二叉堆
  • 4.5 实现上浮和下沉
  • 4.6 总结
  • 4.7 挑战练习
  • 第5章 深入浅出论排序!
  • 5.1 交换排序
  • 5.2 选择排序
  • 5.3 平方时间级排序算法的剖析
  • 5.4 分析插入排序和选择排序的性能
  • 5.5 递归和分治法
  • 5.6 归并排序
  • 5.7 快速排序
  • 5.8 堆排序
  • 5.9 O(NlogN)等级算法的性能比较
  • 5.10 Tim排序
  • 5.11 总结
  • 5.12 挑战练习
  • 第6章 二叉树:掌上世界的无限可能
  • 6.1 基础知识
  • 6.2 二叉查找树
  • 6.3 在二叉查找树中搜索值
  • 6.4 从二叉查找树删除值
  • 6.5 遍历二叉查找树
  • 6.6 分析二叉查找树的性能
  • 6.7 平衡二叉树
  • 6.8 分析平衡二叉树的性能
  • 6.9 使用二叉树作为 (key,value) 符号表
  • 6.10 使用二叉树作为优先队列
  • 6.11 总结
  • 6.12 挑战练习
  • 第7章 图:连得上的才是好的!
  • 7.1 图高效地存储了实用的信息
  • 7.2 使用深度优先搜索解决迷宫问题
  • 7.3 广度优先搜索提供了一种不同的搜索算法
  • 7.4 有向图
  • 7.5 具有边权重的图
  • 7.6 迪杰斯特拉算法
  • 7.7 全顶点对的最短路径
  • 7.8 弗洛伊德-沃歇尔算法
  • 7.9 总结
  • 7.10 挑战练习
  • 第8章 综述
  • 8.1 Python的内置数据类型
  • 8.2 在Python中实现堆栈
  • 8.3 在Python中实现队列
  • 8.4 堆和优先队列的实现
  • 8.5 进一步的探索
  • 关于作者
  • 关于封面
展开全部