展开全部

主编推荐语

一点儿也不难的算法入门书,带你体验一跃而起的顿悟瞬间。

内容简介

作者略过复杂的数学公式,用“通俗讲解×逐步图示×代码实现”的方式介绍了数据结构与算法的基本概念,培养读者的算法思维。

全书共有20章。读者将了解数据结构与算法为何如此重要,如何快速使用大O记法判断代码的运行效率,以及如何用动态规划优化算法。

本书的重点内容包括冒泡排序、选择排序、插入排序等排序算法,以及深度优先搜索、广度优先搜索、迪杰斯特拉算法等图算法。在学习算法的过程中,读者也将通晓数组、哈希表、栈、队列、链表、图等常用数据结构的适用场景。

目录

  • 版权信息
  • 本书赞誉
  • 前言
  • 第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 小结
  • 第3章 哦!大O记法
  • 3.1 大O:对N个元素来说需要多少步
  • 3.2 大O的灵魂
  • 3.3 第三类算法
  • 3.4 对数
  • 3.5 O(log N)的含义
  • 3.6 实际例子
  • 3.7 小结
  • 第4章 使用大O给代码提速
  • 4.1 冒泡排序
  • 4.2 冒泡排序实战
  • 4.3 冒泡排序的效率
  • 4.4 平方问题
  • 4.5 线性解法
  • 4.6 小结
  • 第5章 用或不用大O来优化代码
  • 5.1 选择排序
  • 5.2 选择排序实战
  • 5.3 选择排序的效率
  • 5.4 忽略常数
  • 5.5 大O类别
  • 5.6 小结
  • 第6章 根据情况进行优化
  • 6.1 插入排序
  • 6.2 插入排序实战
  • 6.3 插入排序的效率
  • 6.4 平均情况
  • 6.5 实际例子
  • 6.6 小结
  • 第7章 日常代码中的大O
  • 7.1 偶数平均数
  • 7.2 构词程序
  • 7.3 数组抽样
  • 7.4 摄氏温度平均值
  • 7.5 衣服标签
  • 7.6 1的个数
  • 7.7 回文检查
  • 7.8 计算所有的积
  • 7.9 密码破解程序
  • 7.10 小结
  • 第8章 查找迅速的哈希表
  • 8.1 哈希表
  • 8.2 用哈希函数进行哈希
  • 8.3 好玩又赚钱的同义词典(赚钱是重点)
  • 8.4 哈希表查找
  • 8.5 解决冲突
  • 8.6 创造高效的哈希表
  • 8.7 用哈希表整合数据
  • 8.8 用哈希表优化速度
  • 8.9 小结
  • 第9章 用栈和队列打造优雅的代码
  • 9.1 栈
  • 9.2 抽象数据类型
  • 9.3 栈实战
  • 9.4 受限数据结构的重要性
  • 9.5 队列
  • 9.6 队列实战
  • 9.7 小结
  • 第10章 用递归不停递归
  • 10.1 用递归代替循环
  • 10.2 基准情形
  • 10.3 阅读递归代码
  • 10.4 计算机眼中的递归
  • 10.5 文件系统遍历
  • 10.6 小结
  • 第11章 学习编写递归代码
  • 11.1 递归类别:重复执行
  • 11.2 递归类别:计算
  • 11.3 自上而下递归:新的思维方式
  • 11.4 台阶问题
  • 11.5 易位构词生成
  • 11.6 小结
  • 第12章 动态规划
  • 12.1 不必要的递归调用
  • 12.2 大O小改
  • 12.3 递归的效率
  • 12.4 重复子问题
  • 12.5 动态规划与记忆化
  • 12.6 自下而上的动态规划
  • 12.7 小结
  • 第13章 飞快的递归算法
  • 13.1 分区
  • 13.2 快速排序
  • 13.3 快速排序的效率
  • 13.4 最坏情况下的快速排序
  • 13.5 快速选择
  • 13.6 基于排序的其他算法
  • 13.7 小结
  • 第14章 基于节点的数据结构
  • 14.1 链表
  • 14.2 链表实现
  • 14.3 读取
  • 14.4 查找
  • 14.5 插入
  • 14.6 删除
  • 14.7 链表操作的效率
  • 14.8 链表实战
  • 14.9 双链表
  • 14.10 队列的双链表实现
  • 14.11 小结
  • 第15章 用二叉查找树加速万物
  • 15.1 树
  • 15.2 二叉查找树
  • 15.3 查找
  • 15.4 插入
  • 15.5 删除
  • 15.6 二叉查找树实战
  • 15.7 二叉查找树遍历
  • 15.8 小结
  • 第16章 使用堆分清主次
  • 16.1 优先队列
  • 16.2 堆
  • 16.3 堆的性质
  • 16.4 堆的插入
  • 16.5 寻找尾节点
  • 16.6 堆的删除
  • 16.7 堆和有序数组
  • 16.8 重新解决尾节点问题
  • 16.9 用数组实现堆
  • 16.10 用堆实现优先队列
  • 16.11 小结
  • 第17章 字典树又何妨
  • 17.1 字典树
  • 17.2 存储单词
  • 17.3 字典树查找
  • 17.4 字典树查找的效率
  • 17.5 字典树插入
  • 17.6 实现自动补全
  • 17.7 完成自动补全功能
  • 17.8 带有值的字典树:更好的自动补全
  • 17.9 小结
  • 第18章 连接万物的图
  • 18.1 图
  • 18.2 有向图
  • 18.3 面向对象的图实现
  • 18.4 图的搜索
  • 18.5 深度优先搜索
  • 18.6 广度优先搜索
  • 18.7 图的搜索效率
  • 18.8 加权图
  • 18.9 迪杰斯特拉算法
  • 18.10 小结
  • 第19章 对付空间限制
  • 19.1 空间复杂度的大O记法
  • 19.2 时间和空间的取舍
  • 19.3 递归的隐藏成本
  • 19.4 小结
  • 第20章 代码优化技巧
  • 20.1 前置工作:确定目前的时间复杂度
  • 20.2 从这里开始:最理想复杂度
  • 20.3 魔法查找
  • 20.4 找规律
  • 20.5 贪心算法
  • 20.6 更换数据结构
  • 20.7 小结
  • 20.8 临别感言
  • 附录 习题答案
  • 作者简介
展开全部

评分及书评

3.7
3个评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。