×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
暂无评论
图文详情
  • ISBN:9787115467539
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:32开
  • 页数:217页
  • 出版时间:2017-09-01
  • 条形码:9787115467539 ; 978-7-115-46753-9

本书特色

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

内容简介

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

目录

第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
展开全部

作者简介

Loiane Groner 花旗银行软件开发经理,负责海外项目的开发和团队管理;原IBM公司系统分析师及团队负责人;巴西坎皮纳斯Java用户组(CampinasJUG)ling导者、圣埃斯皮里图Java用户组(ESJUG)协调人;巴西各大型技术会议特邀发言人;Sencha和Java技术布道者,通过博客(http://loianegroner.com)为软件开发社区撰稿,发表关于IT职业发展和常用开发技术的文章和视频。另著有《精通Ext JS》等书。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航