学习 JavaScript 数据结构与算法 第2版 PDF 文档

发布于 2024-06-16 20:35:47 字数 4598 浏览 18 评论 0

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

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

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

对任何专业技术人员来说,理解数据结构都非常重要。作为软件开发者,我们要能够借助编程语言来解决问题,而数据结构是这些问题的解决方案中不可或缺的一部分。如果选择了不恰当的数据结构,可能会影响所写程序的性能。因此,了解不同数据结构和它们的适用范围十分重要。

目录
第 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 概述
ECMAScript 6 和 ECMAScript 7
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 的功能
ES6 和 ES7 的向下兼容性
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 类
用 ES6 语法声明 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 类
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 小结

下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/05/i7G94nOV1L4xqdqI.zip

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

围归者

暂无简介

0 文章
0 评论
25 人气
更多

推荐作者

小瓶盖

文章 0 评论 0

wxsp_Ukbq8xGR

文章 0 评论 0

1638627670

文章 0 评论 0

仅一夜美梦

文章 0 评论 0

夜访吸血鬼

文章 0 评论 0

近卫軍团

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文