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

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

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

用JavaScript深度学习常用的数据结构与算法核心技术,高效解决计算机网络编程常见问题。

内容简介

数据结构是计算机为了高效地利用资源而组织数据的一种方式。数据结构与算法是解决一切编程问题的基础。本书用JavaScript语言介绍了各种数据结构与算法,通俗易懂、循序渐进,有助于计算机科学专业的学生和刚刚开启职业生涯的技术人员探索JavaScript。

相较于上一版,这一版新增了“ECMAScript和TypeScript概述”“递归”“二叉堆和堆排序”和“算法设计与技巧”四章,介绍了ECMAScript 2017的新特性和TypeScript的基本功能,补充了双端队列、黑红树、堆排序算法,以及计数排序和基数排序等内容。

本书非常适合用来学习数据结构与算法。书中的例子写得很好,易于学习和实践。其教学方法也比一般的C/C 图书好得多。如果你没上过算法课,但是想学习实现常用的JavaScript数据结构和算法,或者拥有JavaScript背景但想提升技能,那么一定要看看这本书。

作者简介

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

章节目录

版权信息

前言

第1章 JavaScript简介

1.1 JavaScript数据结构与算法

1.2 环境搭建

1.2.1 最简单的环境搭建

1.2.2 使用Web服务器

1.2.3 Node.js http-schmerver

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

第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类

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 随机算法

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 大表示法

15.1.1 理解大O表示法

15.1.2 时间复杂度比较

15.1.3 NP完全理论概述

15.2 用算法娱乐身心

15.3 小结

学习JavaScript数据结构与算法(第3版)是2019年由人民邮电出版社·图灵出品出版,作者[巴西]洛伊安妮·格罗纳。

得书感谢您对《学习JavaScript数据结构与算法(第3版)》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
算法学习指南 电子书
本书深入阐述关键算法、数据结构、数据类型的基本原理。
机器学习算法评估实战 电子书
在机器学习算法的实际应用中,我们不仅要知道算法的原理,也要了解如何评估算法上线服务的可靠性。
Scratch编程入门与算法进阶(第2版) 电子书
Scratch是国际流行的图形化编程软件,使用者哪怕没有编程基础、不会编程语言,只要有清晰的思路,就可以通过拖曳各个功能模块的方式,设计出智能互动项目,轻松地把创意变成现实。本书同时也是中国电子学会全国青少年软件编程等级考试图形化编程(Scratch一级到四级)的指定用书,基于Scratch3.0中文版,在多个有趣小游戏的制作过程中对应每级考试要求讲解知识点,从图形化编程积木的应用方法,一直讲到程序的结构、算法的设计,内容丰富有趣,寓教于乐,让你逐步学会智能互动知识。对于青少年学习者,本书能够激发他们对编程的兴趣,指导他们了解并掌握Scratch编程技巧,培养他们的编程思维。本书与其他Scratch教程的**不同在于难度跨度设计得当,从简单应用逐步提升到基础算法内容,可以培养很好地编程思维,衔接代码编程。
Web前端学习笔记:HTML5+CSS3+JavaScript 电子书
由浅及深,讲解Web前端开发所需的知识。
深度学习之摄影图像处理:核心算法与案例精粹 电子书
本书内容涉及摄影学、计算机视觉、深度学习3个领域,系统地介绍了计算机视觉在图像质量和摄影学各个领域的核心算法和应用,包括传统的图像处理算法和深度学习核心算法。本书理论知识体系完备,同时提供大量实例,供读者实战演练。本书融合摄影学和计算机视觉的内容,覆盖面非常广。第1章简单介绍摄影的历史、摄影与图像的基本概念和摄影中的许多基本技巧。从第2章开始,本书对摄影学中图像处理算法的各个重要方向进行介绍,包括