展开全部

主编推荐语

数据结构与算法分析入门书,用JS学习常用的数据结构和算法,高效解决计算机科学中的常见问题。

内容简介

本书首先介绍了JavaScript语言的基础知识以及ES6和ES7中引入的新功能,接下来讨论了数组、栈、队列、链表、集合、字典、散列表、树、图等数据结构,之后探讨了各种排序和搜索算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序、顺序搜索、二分搜索,然后介绍了动态规划和贪心算法等常用的高-级算法以及函数式编程,最后还介绍了如何计算算法的复杂度。

本书适用于前端Web开发人员,以及所有对JavaScript数据结构与算法感兴趣的读者。

目录

  • 版权信息
  • 致谢
  • 前言
  • 第1章 JavaScript简介
  • 1.1 JavaScript数据结构与算法
  • 1.2 环境搭建
  • 1.2.1 最简单的环境搭建
  • 1.2.2 使用Web服务器(XAMPP)
  • 1.2.3 使用Node.js搭建Web服务器
  • 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 ECMAScript概述
  • 1.9 ECMAScript 6的功能
  • 1.9.1 用let替代var声明变量
  • 1.9.2 常量
  • 1.9.3 模板字面量
  • 1.9.4 箭头函数
  • 1.9.5 函数的参数默认值
  • 1.9.6 声明展开和剩余参数
  • 1.9.7 使用类进行面向对象编程
  • 1.10 ECMAScript 7的功能
  • 1.11 小结
  • 第2章 数组
  • 2.1 为什么用数组
  • 2.2 创建和初始化数组
  • 2.3 添加元素
  • 2.3.1 使用push方法
  • 2.3.2 插入元素到数组首位
  • 2.4 删除元素
  • 2.5 在任意位置添加或删除元素
  • 2.6 二维和多维数组
  • 2.6.1 迭代二维数组的元素
  • 2.6.2 多维数组
  • 2.7 JavaScript的数组方法参考
  • 2.7.1 数组合并
  • 2.7.2 迭代器函数
  • 2.7.3 ECMAScript 6和数组的新功能
  • 2.7.4 排序元素
  • 2.7.5 搜索
  • 2.7.6 输出数组为字符串
  • 2.8 类型数组
  • 2.9 小结
  • 第3章 栈
  • 3.1 栈数据结构
  • 3.1.1 创建栈
  • 3.1.2 向栈添加元素
  • 3.1.3 从栈移除元素
  • 3.1.4 查看栈顶元素
  • 3.1.5 检查栈是否为空
  • 3.1.6 清空和打印栈元素
  • 3.2 ECMAScript 6和Stack类
  • 3.3 用栈解决问题
  • 3.4 小结
  • 第4章 队列
  • 4.1 队列数据结构
  • 4.2 创建队列
  • 4.2.1 向队列添加元素
  • 4.2.2 从队列移除元素
  • 4.2.3 查看队列头元素
  • 4.2.4 检查队列是否为空
  • 4.2.5 打印队列元素
  • 4.3 用ECMAScript 6语法实现的Queue类
  • 4.4 优先队列
  • 4.5 循环队列——击鼓传花
  • 4.6 JavaScript任务队列
  • 4.7 小结
  • 第5章 链表
  • 5.1 链表数据结构
  • 5.2 创建链表
  • 5.2.1 向链表尾部追加元素
  • 5.2.2 从链表中移除元素
  • 5.2.3 在任意位置插入元素
  • 5.2.4 实现其他方法
  • 5.3 双向链表
  • 5.3.1 在任意位置插入新元素
  • 5.3.2 从任意位置移除元素
  • 5.4 循环链表
  • 5.5 小结
  • 第6章 集合
  • 6.1 构建数据集合
  • 6.2 创建集合
  • 6.2.1 has(value)方法
  • 6.2.2 add方法
  • 6.2.3 remove和clear方法
  • 6.2.4 size方法
  • 6.2.5 values方法
  • 6.2.6 使用Set类
  • 6.3 集合操作
  • 6.3.1 并集
  • 6.3.2 交集
  • 6.3.3 差集
  • 6.3.4 子集
  • 6.4 ES6——Set类
  • 6.5 小结
  • 第7章 字典和散列表
  • 7.1 字典
  • 7.1.1 创建字典
  • 7.1.2 使用Dictionary类
  • 7.2 散列表
  • 7.2.1 创建散列表
  • 7.2.2 使用HashTable类
  • 7.2.3 散列表和散列集合
  • 7.2.4 处理散列表中的冲突
  • 7.2.5 创建更好的散列函数
  • 7.3 ES6——Map类
  • 7.4 ES6——WeakMap类和WeakSet类
  • 7.5 小结
  • 第8章 树
  • 8.1 树数据结构
  • 8.2 树的相关术语
  • 8.3 二叉树和二叉搜索树
  • 8.3.1 创建BinarySearchTree类
  • 8.3.2 向树中插入一个键
  • 8.4 树的遍历
  • 8.4.1 中序遍历
  • 8.4.2 先序遍历
  • 8.4.3 后序遍历
  • 8.5 搜索树中的值
  • 8.5.1 搜索最小值和最大值
  • 8.5.2 搜索一个特定的值
  • 8.5.3 移除一个节点
  • 8.6 自平衡树
  • 8.6.1 Adelson-Velskii-Landi树(AVL树)
  • 8.6.2 更多关于二叉树的知识
  • 8.7 小结
  • 第9章 图
  • 9.1 图的相关术语
  • 9.2 图的表示
  • 9.2.1 邻接矩阵
  • 9.2.2 邻接表
  • 9.2.3 关联矩阵
  • 9.3 创建Graph类
  • 9.4 图的遍历
  • 9.4.1 广度优先搜索
  • 9.4.2 深度优先搜索
  • 9.5 最短路径算法
  • 9.5.1 Dijkstra算法
  • 9.5.2 Floyd-Warshall算法
  • 9.6 最小生成树
  • 9.6.1 Prim算法
  • 9.6.2 Kruskal算法
  • 9.7 小结
  • 第10章 排序和搜索算法
  • 10.1 排序算法
  • 10.1.1 冒泡排序
  • 10.1.2 选择排序
  • 10.1.3 插入排序
  • 10.1.4 归并排序
  • 10.1.5 快速排序
  • 10.1.6 堆排序
  • 10.1.7 计数排序、桶排序和基数排序(分布式排序)
  • 10.2 搜索算法
  • 10.2.1 顺序搜索
  • 10.2.2 二分搜索
  • 10.3 小结
  • 第11章 算法模式
  • 11.1 递归
  • 11.1.1 JavaScript调用栈大小的限制
  • 11.1.2 斐波那契数列
  • 11.2 动态规划
  • 11.2.1 最少硬币找零问题
  • 11.2.2 背包问题
  • 11.2.3 最长公共子序列
  • 11.2.4 矩阵链相乘
  • 11.3 贪心算法
  • 11.3.1 最少硬币找零问题
  • 11.3.2 分数背包问题
  • 11.4 函数式编程简介
  • 11.4.1 函数式编程与命令式编程
  • 11.4.2 ES2015和函数式编程
  • 11.4.3 JavaScript函数式工具箱——map、filter和reduce
  • 11.4.4 JavaScript函数式类库和数据结构
  • 11.5 小结
  • 第12章 算法复杂度
  • 12.1 大O表示法
  • 12.1.1 理解大O表示法
  • 12.1.2 时间复杂度比较
  • 12.1.3 NP完全理论概述
  • 12.2 用算法娱乐身心
  • 12.3 小结
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

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

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