科技
类型
6.0
豆瓣评分
可以朗读
语音朗读
163千字
字数
2014-08-01
发行日期
展开全部
主编推荐语
用JavaScript描述数据结构与算法的开山之作,汇聚了作者多年的实战经验。
内容简介
在过去几年中,JavaScript凭借Node.js和SpiderMonkey等平台,在服务器端编程中得到了广泛应用。JavaScript程序员因而迫切需要使用传统语言(比如C++和Java)提供的工具,包括传统的数据结构以及传统的排序和查找算法。本书讨论在数组即对象、无处不在的全局变量、基于原型的对象模型等JavaScript语言的环境下,如何实现高效的数据结构和算法。本书适合JavaScript程序员以及对JavaScript语言感兴趣的学习者,特别是在学校中没有系统学习过计算机科学相关课程的“跨界”程序员。
目录
- 版权信息
- O'Reilly Media, Inc.介绍
- 业界评论
- 推荐序
- 前言
- 为什么要学习数据结构和算法
- 阅读本书需要的工具
- 本书组织结构
- 排版约定
- 使用代码示例
- Safari® Books Online
- 联系我们
- 致谢
- 第1章 JavaScript的编程环境和模型
- 1.1 JavaScript环境
- 1.2 JavaScript编程实践
- 1.2.1 声明和初始化变量
- 1.2.2 JavaScript中的算术运算和数学库函数
- 1.2.3 判断结构
- 1.2.4 循环结构
- 1.2.5 函数
- 1.2.6 变量作用域
- 1.2.7 递归
- 1.3 对象和面向对象编程
- 1.4 小结
- 第2章 数组
- 2.1 JavaScript中对数组的定义
- 2.2 使用数组
- 2.2.1 创建数组
- 2.2.2 读写数组
- 2.2.3 由字符串生成数组
- 2.2.4 对数组的整体性操作
- 2.3 存取函数
- 2.3.1 查找元素
- 2.3.2 数组的字符串表示
- 2.3.3 由已有数组创建新数组
- 2.4 可变函数
- 2.4.1 为数组添加元素
- 2.4.2 从数组中删除元素
- 2.4.3 从数组中间位置添加和删除元素
- 2.4.4 为数组排序
- 2.5 迭代器方法
- 2.5.1 不生成新数组的迭代器方法
- 2.5.2 生成新数组的迭代器方法
- 2.6 二维和多维数组
- 2.6.1 创建二维数组
- 2.6.2 处理二维数组的元素
- 2.6.3 参差不齐的数组
- 2.7 对象数组
- 2.8 对象中的数组
- 2.9 练习
- 第3章 列表
- 3.1 列表的抽象数据类型定义
- 3.2 实现列表类
- 3.2.1 append:给列表添加元素
- 3.2.2 remove:从列表中删除元素
- 3.2.3 find:在列表中查找某一元素
- 3.2.4 length:列表中有多少个元素
- 3.2.5 toString:显示列表中的元素
- 3.2.6 insert:向列表中插入一个元素
- 3.2.7 clear:清空列表中所有的元素
- 3.2.8 contains:判断给定值是否在列表中
- 3.2.9 遍历列表
- 3.3 使用迭代器访问列表
- 3.4 一个基于列表的应用
- 3.4.1 读取文本文件
- 3.4.2 使用列表管理影碟租赁
- 3.5 练习
- 第4章 栈
- 4.1 对栈的操作
- 4.2 栈的实现
- 4.3 使用Stack类
- 4.3.1 数制间的相互转换
- 4.3.2 回文
- 4.3.3 递归演示
- 4.4 练习
- 第5章 队列
- 5.1 对队列的操作
- 5.2 一个用数组实现的队列
- 5.3 使用队列:方块舞的舞伴分配问题
- 5.4 使用队列对数据进行排序
- 5.5 优先队列
- 5.6 练习
- 第6章 链表
- 6.1 数组的缺点
- 6.2 定义链表
- 6.3 设计一个基于对象的链表
- 6.3.1 Node类
- 6.3.2 LinkedList类
- 6.3.3 插入新节点
- 6.3.4 从链表中删除一个节点
- 6.4 双向链表
- 6.5 循环链表
- 6.6 链表的其他方法
- 6.7 练习
- 第7章 字典
- 7.1 Dictionary类
- 7.2 Dictionary类的辅助方法
- 7.3 为Dictionary类添加排序功能
- 7.4 练习
- 第8章 散列
- 8.1 散列概览
- 8.2 HashTable类
- 8.2.1 选择一个散列函数
- 8.2.2 一个更好的散列函数
- 8.2.3 散列化整型键
- 8.2.4 对散列表排序、从散列表中取值
- 8.3 碰撞处理
- 8.3.1 开链法
- 8.3.2 线性探测法
- 8.4 练习
- 第9章 集合
- 9.1 集合的定义、操作和属性
- 9.1.1 集合的定义
- 9.1.2 对集合的操作
- 9.2 Set类的实现
- 9.3 更多集合操作
- 9.4 练习
- 第10章 二叉树和二叉查找树
- 10.1 树的定义
- 10.2 二叉树和二叉查找树
- 10.2.1 实现二叉查找树
- 10.2.2 遍历二叉查找树
- 10.3 在二叉查找树上进行查找
- 10.3.1 查找最小值和最大值
- 10.3.2 查找给定值
- 10.4 从二叉查找树上删除节点
- 10.5 计数
- 练习
- 第11章 图和图算法
- 11.1 图的定义
- 11.2 用图对现实中的系统建模
- 11.3 图类
- 11.3.1 表示顶点
- 11.3.2 表示边
- 11.3.3 构建图
- 11.4 搜索图
- 11.4.1 深度优先搜索
- 11.4.2 广度优先搜索
- 11.5 查找最短路径
- 11.5.1 广度优先搜索对应的最短路径
- 11.5.2 确定路径
- 11.6 拓扑排序
- 11.6.1 拓扑排序算法
- 11.6.2 实现拓扑排序算法
- 11.7 练习
- 第12章 排序算法
- 12.1 数组测试平台
- 生成随机数据
- 12.2 基本排序算法
- 12.2.1 冒泡排序
- 12.2.2 选择排序
- 12.2.3 插入排序
- 12.2.4 基本排序算法的计时比较
- 12.3 高级排序算法
- 12.3.1 希尔排序
- 计算动态间隔序列
- 12.3.2 归并排序
- 1. 自顶向下的归并排序
- 2. 自底向上的归并排序
- 12.3.3 快速排序
- 快速排序的算法和伪代码
- 12.4 练习
- 第13章 检索算法
- 13.1 顺序查找
- 13.1.1 查找最小值和最大值
- 13.1.2 使用自组织数据
- 13.2 二分查找算法
- 计算重复次数
- 13.3 查找文本数据
- 13.4 练习
- 第14章 高级算法
- 14.1 动态规划
- 14.1.1 动态规划实例:计算斐波那契数列
- 14.1.2 寻找最长公共子串
- 14.1.3 背包问题:递归解决方案
- 14.1.4 背包问题:动态规划方案
- 14.2 贪心算法
- 14.2.1 第一个贪心算法案例:找零问题
- 14.2.2 背包问题的贪心算法解决方案
- 14.3 练习
- 封面介绍
- 看完了
展开全部
出版方
人民邮电出版社·图灵出品
图灵社区成立于2005年6月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材、专著,以及发掘国内优秀原创作品等途径,为目标读者提供一流的内容。