<p>本书首先介绍了JavaScript 语言的基础知识以及ES6 和ES7 中引入的新功能,接下来讨论了数组、栈、队列、链表、集合、字典、散列表、树、图等数据结构,之后探讨了各种排序和搜索算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序、顺序搜索、二分搜索,然后介绍了动态规划和贪心算法等常用的高级算法以及函数式编程,最后还介绍了如何计算算法的复杂度。</p>
学习JavaScript数据结构与算法(第3版)
✍ Scribed by 洛伊安妮·格罗纳
- Publisher
- 人民邮电出版社
- Year
- 2019
- Tongue
- Chinese
- Leaves
- 314
- Series
- 图灵程序设计丛书·Web开发系列
- Category
- Library
No coin nor oath required. For personal study only.
✦ Synopsis
本书首先介绍了JavaScript语言的基础知识(包括ECMAScript和TypeScript),其次讨论了数组、栈、队列、双端队列和链表等重要的数据结构,随后分析了集合、字典和散列表的工作原理,接下来阐述了递归的原理、什么是树以及二叉堆和堆排序,然后介绍了图、DFS和BFS算法、各种排序(冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、桶排序和基数排序)和搜索(顺序搜索、二分搜索和内插搜索)算法以及随机算法,接着介绍了分而治之、动态规划、贪心算法和回溯算法等高级算法以及函数式编程,最后还介绍了如何计算算法的复杂度。
✦ Table of Contents
封面
作者简介
数字版权声明
扉页
版权页
版权声明
致谢
前言
目录
第1章 JavaScript简介
1.1 JavaScript数据结构与算法
1.2 环境搭建
1.2.1 最简单的环境搭建
1.2.2 使用Web服务器
1.2.3 Node.js http-server
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 调试工具
使用VSCode进行调试
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类
ES2015 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 随机算法
Fisher-Yates随机
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 大O表示法
15.1.1 理解大O表示法
15.1.2 时间复杂度比较
15.1.3 NP完全理论概述
15.2 用算法娱乐身心
15.3 小结
连接图灵
看完了
📜 SIMILAR VOLUMES
本书首先介绍了JavaScript语言的基础知识,接下来讨论了数组、栈、队列、链表、集合、字典、散列表、树、图等数据结构,之后探讨了各种排序和搜索算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、顺序搜索、二分搜索,还介绍了动态规划和贪心算法等常用的高级算法及相关知识。
了解数据结构与算法是透彻理解计算机科学的前提。随着Python日益广泛的应用,Python程序员需要实现与传统的面向对象编程语言相似的数据结构与算法。本书是用Python描述数据结构与算法的开山之作,汇聚了作者多年的实战经验,向读者透彻讲解在Python环境下,如何通过一系列存储机制高效地实现各类算法。通过本书,读者将深刻理解Python数据结构、递归、搜索、排序、树与图的应用,等等。
<p>了解数据结构与算法是透彻理解计算机科学的前提。随着Python日益广泛的应用,Python程序员需要实现与传统的面向对象编程语言相似的数据结构与算法。本书是用Python描述数据结构与算法的开山之作,汇聚了作者多年的实战经验,向读者透彻讲解在Python环境下,如何通过一系列存储机制高效地实现各类算法。通过本书,读者将深刻理解Python数据结构、递归、搜索、排序、树与图的应用,等等。</p>
书签已装载, 书签制作方法请找 [email protected] 完全免费 通过本书的学习,读者将能自如地选择最合适的数据结构与算法,并在JavaScript开发中懂得权衡使用。此外,本书也概述了与数据结构与算法相关的JavaScript特性。 本书主要内容如下。 数组和列表:最常用的数据结构。 栈和队列:与列表类似但更复杂的数据结构。 链表:如何通过它们克服数组的不足。 字典:将数据以键-值对的形式存储。 散列:适用于快速查找和检索。 集合:适用于存储只出现一次的元素。 二叉树:以层级的形式存储数据。 图和图算法:网络建模的理想选择。 算法:
<p>《数据结构与算法分析:C++描述(第3版)》是数据结构和算法分析的经典教材,书中使用主流的程序设计语言C++作为具体的实现语言。书的内容包括表、栈、队列、树、散列表、优先队列、排序、不相交集算法、图论算法、算法分析、算法设计、摊还分析、查找树算法、k-d树和配对堆等。《数据结构与算法分析:C++描述(第3版)》适合作为计算机相关专业本科生的数据结构课程和研究生算法分析课程的教材。本科生的数据结构课程可以使用《数据结构与算法分析:C++描述(第3版)》第1章~第9章,多学时课程还可以讲解第10章;研究生算法分析课程可以使用第6章~第12章。</p>