展开全部

主编推荐语

用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月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材、专著,以及发掘国内优秀原创作品等途径,为目标读者提供一流的内容。