当前位置:主页 > 计算机电子书 > javascript > JavaScript下载
学习JavaScript数据结构与算法(第2版)

学习JavaScript数据结构与算法(第2版) PDF 清晰版

  • 更新:2021-12-13
  • 大小:13 MB
  • 类别:JavaScript
  • 作者:洛伊安妮·格罗纳(Loiane、Groner)
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

编辑推荐

数据结构是计算机为了高效地利用资源而组织数据的一种方式。数据结构和算法是解决一切编程问题的基础。本书首先介绍了JavaScript语言的基础知识,接着讨论了数组、栈、队列和链表等重要的数据结构,随后分析了集合、字典和散列表的工作原理,接下来阐述了什么是树以及如何使用二叉树和二叉搜索树,然后介绍了图、DFS和BFS算法,以及各种排序(冒泡排序、选择排序、插入排序、归并排序、快速排序等)和搜索(顺序搜索、二分搜索)算法,zui后介绍了动态规划和贪心算法等高ji算法。相较上一版,这一版新增了ES6和ES7的新功能介绍,补充了ES6的当前实现。同时拓展了对树、图、排序算法、动态规划和贪心算法的讨论,增加了AVL树、Dijkstra算法、Floyd-Warshall算法、Prim算法、Kruskal算法、堆排序、分布式排序、背包问题、矩阵链相乘等内容。此外还概述了函数式编程、NP完全理论。如果你是计算机科学专业的学生,或是刚刚开启职业生涯的技术人员,想探索JavaScript的zui佳能力,这本书一定适合你。

内容简介

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

目录

  • 第1 章 JavaScript 简介 1
  • 1.1 JavaScript 数据结构与算法 1
  • 1.2 环境搭建 2
  • 1.2.1 最简单的环境搭建 2
  • 1.2.2 使用Web 服务器(XAMPP) 4
  • 1.2.3 使用Node.js 搭建Web 服务器 5
  • 1.3 JavaScript 基础 6
  • 1.3.1 变量 7
  • 1.3.2 操作符 9
  • 1.3.3 真值和假值 11
  • 1.3.4 相等操作符(==和===) 12
  • 1.4 控制结构 14
  • 1.4.1 条件语句 14
  • 1.4.2 循环 15
  • 1.5 函数 16
  • 1.6 JavaScript 面向对象编程 17
  • 1.7 调试工具 18
  • 1.8 ECMAScript 概述 19
  • 1.9 ECMAScript 6 的功能 21
  • 1.9.1 用let 替代var 声明变量 21
  • 1.9.2 常量 23
  • 1.9.3 模板字面量 23
  • 1.9.4 箭头函数 24
  • 1.9.5 函数的参数默认值 24
  • 1.9.6 声明展开和剩余参数 25
  • 1.9.7 使用类进行面向对象编程 27
  • 1.10 ECMAScript 7 的功能 29
  • 1.11 小结 30
  • 第2 章 数组 31
  • 2.1 为什么用数组 31
  • 2.2 创建和初始化数组 32
  • 2.3 添加元素 33
  • 2.3.1 使用push 方法 33
  • 2.3.2 插入元素到数组首位 34
  • 2.4 删除元素 34
  • 2.5 在任意位置添加或删除元素 36
  • 2.6 二维和多维数组 36
  • 2.6.1 迭代二维数组的元素 37
  • 2.6.2 多维数组 38
  • 2.7 JavaScript 的数组方法参考 39
  • 2.7.1 数组合并 39
  • 2.7.2 迭代器函数 40
  • 2.7.3 ECMAScript 6 和数组的新功能 42
  • 2.7.4 排序元素 46
  • 2.7.5 搜索 48
  • 2.7.6 输出数组为字符串 49
  • 2.8 类型数组 50
  • 2.9 小结 51
  • 第3 章 栈 52
  • 3.1 栈数据结构 52
  • 3.1.1 创建栈 53
  • 3.1.2 向栈添加元素 53
  • 3.1.3 从栈移除元素 53
  • 3.1.4 查看栈顶元素 54
  • 3.1.5 检查栈是否为空 54
  • 3.1.6 清空和打印栈元素 54
  • 3.2 ECMAScript 6 和Stack 类 56
  • 3.3 用栈解决问题 59
  • 3.4 小结 61
  • 第4 章 队列 62
  • 4.1 队列数据结构 62
  • 4.2 创建队列 63
  • 4.2.1 向队列添加元素 63
  • 4.2.2 从队列移除元素 63
  • 4.2.3 查看队列头元素 64
  • 4.2.4 检查队列是否为空 64
  • 4.2.5 打印队列元素 64
  • 4.3 用ECMAScript 6 语法实现的Queue 类 66
  • 4.4 优先队列 66
  • 4.5 循环队列——击鼓传花 68
  • 4.6 JavaScript 任务队列 70
  • 4.7 小结 70
  • 第5 章 链表 71
  • 5.1 链表数据结构 71
  • 5.2 创建链表 72
  • 5.2.1 向链表尾部追加元素 73
  • 5.2.2 从链表中移除元素 75
  • 5.2.3 在任意位置插入元素 77
  • 5.2.4 实现其他方法 79
  • 5.3 双向链表 82
  • 5.3.1 在任意位置插入新元素 82
  • 5.3.2 从任意位置移除元素 85
  • 5.4 循环链表 87
  • 5.5 小结 88
  • 第6 章 集合 89
  • 6.1 构建数据集合 89
  • 6.2 创建集合 89
  • 6.2.1 has(value)方法 90
  • 6.2.2 add 方法 91
  • 6.2.3 remove 和clear 方法 91
  • 6.2.4 size 方法 92
  • 6.2.5 values 方法 93
  • 6.2.6 使用Set 类 93
  • 6.3 集合操作 94
  • 6.3.1 并集 94
  • 6.3.2 交集 95
  • 6.3.3 差集 97
  • 6.3.4 子集 98
  • 6.4 ES6——Set 类 99
  • 6.5 小结 101
  • 第7 章 字典和散列表 102
  • 7.1 字典 102
  • 7.1.1 创建字典 102
  • 7.1.2 使用Dictionary 类 105
  • 7.2 散列表 106
  • 7.2.1 创建散列表 106
  • 7.2.2 使用HashTable 类 108
  • 7.2.3 散列表和散列集合 109
  • 7.2.4 处理散列表中的冲突 109
  • 7.2.5 创建更好的散列函数 117
  • 7.3 ES6——Map 类 118
  • 7.4 ES6——WeakMap 类和WeakSet 类 118
  • 7.5 小结 119
  • 第8 章 树 120
  • 8.1 树数据结构 120
  • 8.2 树的相关术语 121
  • 8.3 二叉树和二叉搜索树 121
  • 8.3.1 创建BinarySearchTree 类 122
  • 8.3.2 向树中插入一个键 123
  • 8.4 树的遍历 126
  • 8.4.1 中序遍历 126
  • 8.4.2 先序遍历 127
  • 8.4.3 后序遍历 128
  • 8.5 搜索树中的值 129
  • 8.5.1 搜索最小值和值 130
  • 8.5.2 搜索一个特定的值 131
  • 8.5.3 移除一个节点 133
  • 8.6 自平衡树 137
  • 8.6.1 Adelson-Velskii-Landi 树(AVL 树) 137
  • 8.6.2 更多关于二叉树的知识 143
  • 8.7 小结 143
  • 第9 章 图 144
  • 9.1 图的相关术语 144
  • 9.2 图的表示 146
  • 9.2.1 邻接矩阵 146
  • 9.2.2 邻接表 147
  • 9.2.3 关联矩阵 148
  • 9.3 创建Graph 类 148
  • 9.4 图的遍历 150
  • 9.4.1 广度优先搜索 151
  • 9.4.2 深度优先搜索 156
  • 9.5 最短路径算法 162
  • 9.5.1 Dijkstra 算法 163
  • 9.5.2 Floyd-Warshall 算法 165
  • 9.6 最小生成树 166
  • 9.6.1 Prim 算法 166
  • 9.6.2 Kruskal 算法 168
  • 9.7 小结 169
  • 第10 章 排序和搜索算法 170
  • 10.1 排序算法 170
  • 10.1.1 冒泡排序 171
  • 10.1.2 选择排序 174
  • 10.1.3 插入排序 175
  • 10.1.4 归并排序 176
  • 10.1.5 快速排序 179
  • 10.1.6 堆排序 183
  • 10.1.7 计数排序、桶排序和基数排序(分布式排序) 186
  • 10.2 搜索算法 187
  • 10.2.1 顺序搜索 187
  • 10.2.2 二分搜索 187
  • 10.3 小结 189
  • 第11 章 算法模式 190
  • 11.1 递归 190
  • 11.1.1 JavaScript 调用栈大小的限制 191
  • 11.1.2 斐波那契数列 191
  • 11.2 动态规划 193
  • 11.2.1 最少硬币找零问题 194
  • 11.2.2 背包问题 196
  • 11.2.3 最长公共子序列 198
  • 11.2.4 矩阵链相乘 200
  • 11.3 贪心算法 202
  • 11.3.1 最少硬币找零问题 203
  • 11.3.2 分数背包问题 204
  • 11.4 函数式编程简介 205
  • 11.4.1 函数式编程与命令式编程 205
  • 11.4.2 ES2015 和函数式编程 206
  • 11.4.3 JavaScript 函数式工具箱——
  • map、filter 和reduce 207
  • 11.4.4 JavaScript 函数式类库和数据结构 209
  • 11.5 小结 209
  • 第12 章 算法复杂度 210
  • 12.1 大O 表示法 210
  • 12.1.1 理解大O 表示法 210
  • 12.1.2 时间复杂度比较 212
  • 12.1.3 NP 完全理论概述 214
  • 12.2 用算法娱乐身心 216
  • 12.3 小结 217

资源获取

资源地址1:https://pan.baidu.com/s/160HG4bg4eu6dO1fLl_voqA

相关资源

网友留言