学习JavaScript数据结构与算法(第3版)

0
(0)

学习JavaScript数据结构与算法(第3版)

作者:[巴西]洛伊安妮·格罗纳

出版社:人民邮电出版社

译者:吴双/邓钢/孙晓博等

出版年:2019-5

页数:308

定价:69.00元

装帧:平装

丛书:图灵程序设计丛书·Web开发系列

ISBN:9787115510174

内容简介
······

本书首先介绍了JavaScript语言的基础知识(包括ECMAScript和TypeScript),其次讨论了数组、栈、队列、双端队列和链表等重要的数据结构,随后分析了集合、字典和散列表的工作原理,接下来阐述了递归的原理、什么是树以及二叉堆和堆排序,然后介绍了图、DFS和BFS算法、各种排序(冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、桶排序和基数排序)和搜索(顺序搜索、二分搜索和内插搜索)算法以及随机算法,接着介绍了分而治之、动态规划、贪心算法和回溯算法等高级算法以及函数式编程,最后还介绍了如何计算算法的复杂度。

作者简介
······

洛伊安妮·格罗纳(Loiane Groner)

花旗银行软件开发经理,负责海外项目的开发和团队管理;原IBM公司系统分析师及团队负责人;巴西坎皮纳斯Java用户组(CampinasJUG)协调人;Sencha和Java技术推广者,通过博客为软件开发社区撰稿,发表关于IT职业发展和常用开发技术的文章和视频,并经常受邀在各大技术会议上做报告。另著有《精通Ext JS》等书。

目录
······

第1章 JavaScript简介  1

1.1 JavaScript数据结构与算法  1

1.2 环境搭建  2

1.2.1 最简单的环境搭建  2

1.2.2 使用Web服务器  3

1.2.3 Node.js http-server  5

1.3 JavaScript基础  5

1.3.1 变量  6

1.3.2 运算符  8

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 小结  20

第2章 ECMAScript和TypeScript概述  21

2.1 ECMAScript还是JavaScript  21

2.1.1 ES6、ES2015、ES7、ES2016、ES8、ES2017和ES.Next  21

2.1.2 使用Babel.js  23

2.2 ECMAScript 2015+的功能  24

2.2.1 用let替代var声明变量  24

2.2.2 模板字面量  27

2.2.3 箭头函数  27

2.2.4 函数的参数默认值  28

2.2.5 声明展开和剩余参数  29

2.2.6 增强的对象属性  30

2.2.7 使用类进行面向对象编程  31

2.2.8 乘方运算符  33

2.2.9 模块  33

2.3 介绍TypeScript  39

2.3.1 类型推断  40

2.3.2 接口  41

2.3.3 其他TypeScript功能  43

2.3.4 TypeScript中对JavaScript文件的编译时检查  43

2.4 小结  44

第3章 数组  45

3.1 为什么用数组  45

3.2 创建和初始化数组  46

3.3 添加元素  47

3.3.1 在数组末尾插入元素  47

3.3.2 在数组开头插入元素  48

3.4 删除元素  49

3.4.1 从数组末尾删除元素  49

3.4.2 从数组开头删除元素  49

3.5 在任意位置添加或删除元素  51

3.6 二维和多维数组  51

3.6.1 迭代二维数组的元素  52

3.6.2 多维数组  53

3.7 JavaScript的数组方法参考  54

3.7.1 数组合并  55

3.7.2 迭代器函数  55

3.7.3 ECMAScript 6和数组的新功能  57

3.7.4 排序元素  60

3.7.5 搜索  63

3.7.6 输出数组为字符串  64

3.8 类型数组  64

3.9 TypeScript中的数组  65

3.10 小结  66

第4章 栈  67

4.1 创建一个JavaScript数据结构和算法库  67

4.2 栈数据结构  68

4.2.1 创建一个基于数组的栈  69

4.2.2 向栈添加元素  69

4.2.3 从栈移除元素  70

4.2.4 查看栈顶元素  70

4.2.5 检查栈是否为空  71

4.2.6 清空栈元素  71

4.2.7 使用Stack类  71

4.3 创建一个基于JavaScript对象的Stack类  73

4.3.1 向栈中插入元素  73

4.3.2 验证一个栈是否为空和它的大小  74

4.3.3 从栈中弹出元素  74

4.3.4 查看栈顶的值并将栈清空  75

4.3.5 创建toString方法  75

4.4 保护数据结构内部元素  76

4.4.1 下划线命名约定  76

4.4.2 用ES2015的限定作用域Symbol实现类  77

4.4.3 用ES2015的WeakMap实现类  77

4.4.4 ECMAScript类属性提案  78

4.5 用栈解决问题  79

4.6 小结  81

第5章 队列和双端队列  82

5.1 队列数据结构  82

5.1.1 创建队列  83

5.1.2 使用Queue 类  86

5.2 双端队列数据结构  87

5.2.1 创建Deque类  87

5.2.2 使用Deque类  89

5.3 使用队列和双端队列来解决问题  90

5.3.1 循环队列——击鼓传花游戏  90

5.3.2 回文检查器  91

5.3.3 JavaScript任务队列  93

5.4 小结  93

第6章 链表  94

6.1 链表数据结构  94

6.2 双向链表  106

6.2.1 在任意位置插入新元素  107

6.2.2 从任意位置移除元素  109

6.3 循环链表  111

6.3.1 在任意位置插入新元素  112

6.3.2 从任意位置移除元素  113

6.4 有序链表  114

6.5 创建StackLinkedList类  116

6.6 小结  117

第7章 集合  118

7.1 构建数据集合  118

7.2 创建集合类  119

7.2.1 has(element)方法  119

7.2.2 add方法  120

7.2.3 delete和clear方法  120

7.2.4 size方法  121

7.2.5 values方法  122

7.2.6 使用Set类  122

7.3 集合运算  123

7.3.1 并集  123

7.3.2 交集  125

7.3.3 差集  127

7.3.4 子集  128

7.4 ECMAScript 2015——Set类  130

7.5 多重集或袋  132

7.6 小结  133

第8章 字典和散列表  134

8.1 字典  134

8.1.1 创建字典类  135

8.1.2 使用Dictionary类  141

8.2 散列表  142

8.2.1 创建散列表  143

8.2.2 使用HashTable类  146

8.2.3 散列表和散列集合  147

8.2.4 处理散列表中的冲突  147

8.2.5 创建更好的散列函数  158

8.3 ES2015 Map类  159

8.4 ES2105 WeakMap类和WeakSet类  159

8.5 小结  160

第9章 递归  161

9.1 理解递归  161

9.2 计算一个数的阶乘  162

9.2.1 迭代阶乘  162

9.2.2 递归阶乘  163

9.3 斐波那契数列  165

9.3.1 迭代求斐波那契数  166

9.3.2 递归求斐波那契数  166

9.3.3 记忆化斐波那契数  167

9.4 为什么要用递归?它更快吗  167

9.5 小结  168

第10章 树  169

10.1 树数据结构  169

10.2 树的相关术语  170

10.3 二叉树和二叉搜索树  170

10.3.1 创建BinarySearchTree类  171

10.3.2 向二叉搜索树中插入一个键  172

10.4 树的遍历  175

10.4.1 中序遍历  175

10.4.2 先序遍历  176

10.4.3 后序遍历  177

10.5 搜索树中的值  178

10.5.1 搜索最小值和最大值  178

10.5.2 搜索一个特定的值  180

10.5.3 移除一个节点  182

10.6 自平衡树  185

10.6.1 Adelson-Velskii-Landi树(AVL树)  185

10.6.2 红黑树  194

10.7 小结  200

第11章 二叉堆和堆排序  201

11.1 二叉堆数据结构  201

11.1.1 创建最小堆类  202

11.1.2 创建最大堆类  208

11.2 堆排序算法  209

11.3 小结  211

第12章 图  212

12.1 图的相关术语  212

12.2 图的表示  214

12.2.1 邻接矩阵  215

12.2.2 邻接表  215

12.2.3 关联矩阵  216

12.3 创建Graph类  216

12.4 图的遍历  219

12.4.1 广度优先搜索  220

12.4.2 深度优先搜索  225

12.5 最短路径算法  231

12.5.1 Dijkstra算法  232

12.5.2 Floyd-Warshall算法  234

12.6 最小生成树  235

12.6.1 Prim算法  236

12.6.2 Kruskal算法  237

12.7 小结  238

第13章 排序和搜索算法  239

13.1 排序算法  239

13.1.1 冒泡排序  239

13.1.2 选择排序  242

13.1.3 插入排序  244

13.1.4 归并排序  245

13.1.5 快速排序  247

13.1.6 计数排序  251

13.1.7 桶排序  253

13.1.8 基数排序  255

13.2 搜索算法  257

13.2.1 顺序搜索  257

13.2.2 二分搜索  258

13.2.3 内插搜索  260

13.3 随机算法  261

13.4 小结  262

第14章 算法设计与技巧  263

14.1 分而治之  263

14.2 动态规划  265

14.2.1 最少硬币找零问题  266

14.2.2 背包问题  268

14.2.3 最长公共子序列  270

14.2.4 矩阵链相乘  272

14.3 贪心算法  274

14.3.1 最少硬币找零问题  274

14.3.2 分数背包问题  275

14.4 回溯算法  276

14.4.1 迷宫老鼠问题  277

14.4.2 数独解题器  279

14.5 函数式编程简介  282

14.5.1 函数式编程与命令式编程  283

14.5.3 JavaScript函数式工具箱——map、filter和reduce  284

14.5.4 JavaScript函数式类库和数据结构  286

14.6 小结  286

第15章 算法复杂度  287

15.1 大O表示法  287

15.1.1 理解大O表示法  287

15.1.2 时间复杂度比较  289

15.1.3 NP完全理论概述  292

15.2 用算法娱乐身心  293

15.3 小结  294

"学习JavaScript数据结构与算法(第3版)"试读
······

JavaScript是当下最流行的编程语言之一。由于浏览器的原生支持(无须安装任何插件),JavaScript也被称作“互联网语言”。JavaScript的应用非常广泛,不仅用于前端开发,也被用到服务器(Node.js)环境、数据库(MongoDB)环境和移动设备中,同样还被用在嵌入式设备和物联网(IoT)设备中。
对任何专业技术人员来说,理解数据结构都非常重要。作为软件开发者,我们要能够借助编程语言..

  • 前  言
  • 第1章 JavaScript简介

评论 ······

第三版

读了一遍 没什么感觉

从硬币找零开始,尝试自己实现算法,发现从看懂到写出来距离还蛮遥远。回溯算法里的两个例子还没有实现。矩阵链相乘自己的实现解法不算优,再优化一下。然后再试着实现一下常见的排序算法。接下来再看剑指 offer 。总的来说这本书对我帮助蛮大的,尤其前面数据结构部分。有一些印刷错误,但是能看明白就好。只看了书,没看源码。

用来入门不错,但是实战例子太少,需要再看大部头书并且多刷题

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

推荐阅读

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册