3.7 用户推荐指数
科技
类型
8.8
豆瓣评分
可以朗读
语音朗读
245千字
字数
2022-09-01
发行日期
展开全部
主编推荐语
一点儿也不难的算法入门书,带你体验一跃而起的顿悟瞬间。
内容简介
作者略过复杂的数学公式,用“通俗讲解×逐步图示×代码实现”的方式介绍了数据结构与算法的基本概念,培养读者的算法思维。
全书共有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 临别感言
- 附录 习题答案
- 作者简介
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。