展开全部

主编推荐语

用JavaScript深度学习常用的数据结构与算法核心技术,高效解决计算机网络编程常见问题。

内容简介

数据结构是计算机为了高效地利用资源而组织数据的一种方式。数据结构与算法是解决一切编程问题的基础。本书用JavaScript语言介绍了各种数据结构与算法,通俗易懂、循序渐进,有助于计算机科学专业的学生和刚刚开启职业生涯的技术人员探索JavaScript。

相较于上一版,这一版新增了“ECMAScript和TypeScript概述”“递归”“二叉堆和堆排序”和“算法设计与技巧”四章,介绍了ECMAScript 2017的新特性和TypeScript的基本功能,补充了双端队列、黑红树、堆排序算法,以及计数排序和基数排序等内容。

本书非常适合用来学习数据结构与算法。书中的例子写得很好,易于学习和实践。其教学方法也比一般的C/C 图书好得多。如果你没上过算法课,但是想学习实现常用的JavaScript数据结构和算法,或者拥有JavaScript背景但想提升技能,那么一定要看看这本书。

目录

  • 版权信息
  • 前言
  • 第1章 JavaScript简介
  • 1.1 JavaScript数据结构与算法
  • 1.2 环境搭建
  • 1.2.1 最简单的环境搭建
  • 1.2.2 使用Web服务器
  • 1.2.3 Node.js http-schmerver
  • 1.3 JavaScript基础
  • 1.3.1 变量
  • 1.3.2 运算符
  • 1.3.3 真值和假值
  • 1.3.4 相等运算符(==和===)
  • 1.4 控制结构
  • 1.4.1 条件语句
  • 1.4.2 循环
  • 1.5 函数
  • 1.6 JavaScript面向对象编程
  • 1.7 调试工具
  • 1.8 小结
  • 第2章 ECMAScript和TypeScript概述
  • 2.1 ECMAScript还是JavaScript
  • 2.1.1 ES6、ES2015、ES7、ES2016、ES8、ES2017和ES.Next
  • 2.1.2 使用Babel.js
  • 2.2 ECMAScript 2015+的功能
  • 2.2.1 用let替代var声明变量
  • 2.2.2 模板字面量
  • 2.2.3 箭头函数
  • 2.2.4 函数的参数默认值
  • 2.2.5 声明展开和剩余参数
  • 2.2.6 增强的对象属性
  • 2.2.7 使用类进行面向对象编程
  • 2.2.8 乘方运算符
  • 2.2.9 模块
  • 2.3 介绍TypeScript
  • 2.3.1 类型推断
  • 2.3.2 接口
  • 2.3.3 其他TypeScript功能
  • 2.3.4 TypeScript中对JavaScript文件的编译时检查
  • 2.4 小结
  • 第3章 数组
  • 3.1 为什么用数组
  • 3.2 创建和初始化数组
  • 3.3 添加元素
  • 3.3.1 在数组末尾插入元素
  • 3.3.2 在数组开头插入元素
  • 3.4 删除元素
  • 3.4.1 从数组末尾删除元素
  • 3.4.2 从数组开头删除元素
  • 3.5 在任意位置添加或删除元素
  • 3.6 二维和多维数组
  • 3.6.1 迭代二维数组的元素
  • 3.6.2 多维数组
  • 3.7 JavaScript的数组方法参考
  • 3.7.1 数组合并
  • 3.7.2 迭代器函数
  • 3.7.3 ECMAScript 6和数组的新功能
  • 3.7.4 排序元素
  • 3.7.5 搜索
  • 3.7.6 输出数组为字符串
  • 3.8 类型数组
  • 3.9 TypeScript中的数组
  • 3.10 小结
  • 第4章 栈
  • 4.1 创建一个JavaScript数据结构和算法库
  • 4.2 栈数据结构
  • 4.2.1 创建一个基于数组的栈
  • 4.2.2 向栈添加元素
  • 4.2.3 从栈移除元素
  • 4.2.4 查看栈顶元素
  • 4.2.5 检查栈是否为空
  • 4.2.6 清空栈元素
  • 4.2.7 使用Stack类
  • 4.3 创建一个基于JavaScript对象的Stack类
  • 4.3.1 向栈中插入元素
  • 4.3.2 验证一个栈是否为空和它的大小
  • 4.3.3 从栈中弹出元素
  • 4.3.4 查看栈顶的值并将栈清空
  • 4.3.5 创建toString方法
  • 4.4 保护数据结构内部元素
  • 4.4.1 下划线命名约定
  • 4.4.2 用ES2015的限定作用域Symbol实现类
  • 4.4.3 用ES2015的WeakMap实现类
  • 4.4.4 ECMAScript类属性提案
  • 4.5 用栈解决问题
  • 4.6 小结
  • 第5章 队列和双端队列
  • 5.1 队列数据结构
  • 5.1.1 创建队列
  • 5.1.2 使用Queue类
  • 5.2 双端队列数据结构
  • 5.2.1 创建Deque类
  • 5.2.2 使用Deque类
  • 5.3 使用队列和双端队列来解决问题
  • 5.3.1 循环队列——击鼓传花游戏
  • 5.3.2 回文检查器
  • 5.3.3 JavaScript任务队列
  • 5.4 小结
  • 第6章 链表
  • 6.1 链表数据结构
  • 6.2 双向链表
  • 6.2.1 在任意位置插入新元素
  • 6.2.2 从任意位置移除元素
  • 6.3 循环链表
  • 6.3.1 在任意位置插入新元素
  • 6.3.2 从任意位置移除元素
  • 6.4 有序链表
  • 6.5 创建StackLinkedList类
  • 6.6 小结
  • 第7章 集合
  • 7.1 构建数据集合
  • 7.2 创建集合类
  • 7.2.1 has(element)方法
  • 7.2.2 add方法
  • 7.2.3 delete和clear方法
  • 7.2.4 size方法
  • 7.2.5 values方法
  • 7.2.6 使用Set类
  • 7.3 集合运算
  • 7.3.1 并集
  • 7.3.2 交集
  • 7.3.3 差集
  • 7.3.4 子集
  • 7.4 ECMAScript 2015——Set类
  • 7.5 多重集或袋
  • 7.6 小结
  • 第8章 字典和散列表
  • 8.1 字典
  • 8.1.1 创建字典类
  • 8.1.2 使用Dictionary类
  • 8.2 散列表
  • 8.2.1 创建散列表
  • 8.2.2 使用HashTable类
  • 8.2.3 散列表和散列集合
  • 8.2.4 处理散列表中的冲突
  • 8.2.5 创建更好的散列函数
  • 8.3 ES2015 Map类
  • 8.4 ES2105 WeakMap类和WeakSet类
  • 8.5 小结
  • 第9章 递归
  • 9.1 理解递归
  • 9.2 计算一个数的阶乘
  • 9.2.1 迭代阶乘
  • 9.2.2 递归阶乘
  • 9.3 斐波那契数列
  • 9.3.1 迭代求斐波那契数
  • 9.3.2 递归求斐波那契数
  • 9.3.3 记忆化斐波那契数
  • 9.4 为什么要用递归?它更快吗
  • 9.5 小结
  • 第10章 树
  • 10.1 树数据结构
  • 10.2 树的相关术语
  • 10.3 二叉树和二叉搜索树
  • 10.3.1 创建BinarySearchTree类
  • 10.3.2 向二叉搜索树中插入一个键
  • 10.4 树的遍历
  • 10.4.1 中序遍历
  • 10.4.2 先序遍历
  • 10.4.3 后序遍历
  • 10.5 搜索树中的值
  • 10.5.1 搜索最小值和最大值
  • 10.5.2 搜索一个特定的值
  • 10.5.3 移除一个节点
  • 10.6 自平衡树
  • 10.6.1 Adelson-Velskii-Landi树(AVL树)
  • 10.6.2 红黑树
  • 10.7 小结
  • 第11章 二叉堆和堆排序
  • 11.1 二叉堆数据结构
  • 11.1.1 创建最小堆类
  • 11.1.2 创建最大堆类
  • 11.2 堆排序算法
  • 11.3 小结
  • 第12章 图
  • 12.1 图的相关术语
  • 12.2 图的表示
  • 12.2.1 邻接矩阵
  • 12.2.2 邻接表
  • 12.2.3 关联矩阵
  • 12.3 创建Graph类
  • 12.4 图的遍历
  • 12.4.1 广度优先搜索
  • 12.4.2 深度优先搜索
  • 12.5 最短路径算法
  • 12.5.1 Dijkstra算法
  • 12.5.2 Floyd-Warshall算法
  • 12.6 最小生成树
  • 12.6.1 Prim算法
  • 12.6.2 Kruskal算法
  • 12.7 小结
  • 第13章 排序和搜索算法
  • 13.1 排序算法
  • 13.1.1 冒泡排序
  • 13.1.2 选择排序
  • 13.1.3 插入排序
  • 13.1.4 归并排序
  • 13.1.5 快速排序
  • 13.1.6 计数排序
  • 13.1.7 桶排序
  • 13.1.8 基数排序
  • 13.2 搜索算法
  • 13.2.1 顺序搜索
  • 13.2.2 二分搜索
  • 13.2.3 内插搜索
  • 13.3 随机算法
  • 13.4 小结
  • 第14章 算法设计与技巧
  • 14.1 分而治之
  • 14.2 动态规划
  • 14.2.1 最少硬币找零问题
  • 14.2.2 背包问题
  • 14.2.3 最长公共子序列
  • 14.2.4 矩阵链相乘
  • 14.3 贪心算法
  • 14.3.1 最少硬币找零问题
  • 14.3.2 分数背包问题
  • 14.4 回溯算法
  • 14.4.1 迷宫老鼠问题
  • 14.4.2 数独解题器
  • 14.5 函数式编程简介
  • 14.5.1 函数式编程与命令式编程
  • 14.5.2 ES2015+和函数式编程
  • 14.5.3 JavaScript 函数式工具箱——map、filter和reduce
  • 14.5.4 JavaScript 函数式类库和数据结构
  • 14.6 小结
  • 第15章 算法复杂度
  • 15.1 大表示法
  • 15.1.1 理解大O表示法
  • 15.1.2 时间复杂度比较
  • 15.1.3 NP完全理论概述
  • 15.2 用算法娱乐身心
  • 15.3 小结
展开全部

评分及书评

4.8
4个评分
  • 用户头像
    给这本书评了
    5.0

    JavaScript 是当下最流行的编程语言之一。由于浏览器的原生支持(无须安装任何插件),JavaScript 也被称作 “互联网语言”。JavaScript 的应用非常广泛,不仅用于前端开发,也被用到服务器(Node.js)环境、数据库(MongoDB)环境和移动设备中,同样还被用在嵌入式设备和物联网(IoT)设备中。

      转发
      评论

    出版方

    人民邮电出版社·图灵出品

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