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

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

评分 4.3
字数
23.2万字
章节数
15
丛书
图灵程序设计丛书·Web开发系列
ISBN
9787115510174

标签

内容简介

本书是巴西开发者洛伊安妮·格罗纳(Loiane Groner)所著《Learning JavaScript Data Structures and Algorithms》第三版的中文译本,面向已具备 JavaScript 基础、希望系统补齐计算机科学基础的前端与全栈开发者。全书共 15 章,先在第 1—2 章回顾 JavaScript 语言特性、环境搭建与调试工具,并介绍 ECMAScript 2015 及之后的语言新特性(let、模板字面量、箭头函数、默认参数、展开与剩余参数、类、模块等)以及 TypeScript 的基本用法,为后续实现打下语法基础。随后依次用 JavaScript 亲手实现数组、栈、队列与双端队列、链表(单向、双向、循环、有序)、集合、字典与散列表等基础结构,并对照 ES2015 的 Set、Map、WeakMap、WeakSet 说明原生实现与自研实现的差异。书中还专门讨论递归的原理与代价,讲解二叉树与二叉搜索树、树的遍历与节点删除、AVL 树与红黑树等自平衡树,以及二叉堆与堆排序;在图一章覆盖邻接矩阵、邻接表、关联矩阵三种表示法,广度优先与深度优先遍历,Dijkstra 与 Floyd-Warshall 最短路径,Prim 与 Kruskal 最小生成树。算法部分涵盖冒泡、选择、插入、归并、快速、计数、桶、基数等排序,顺序、二分、内插搜索与洗牌算法,并进一步介绍分而治之、动态规划、贪心、回溯等设计策略与函数式编程的简单应用。最后一章讲解大 O 表示法与算法复杂度比较,并概述 NP 完全理论。相较于上一版,本版新增了 ECMAScript 与 TypeScript 概述、递归、二叉堆和堆排序、算法设计与技巧等章节,并补充了双端队列、红黑树、计数排序和基数排序等内容。全书配有源码仓库,可边读边动手实现。

编辑推荐

很多前端开发者的知识结构里,框架和 API 学得很快,数据结构与算法却一直是短板。这本书的价值就在于:它不要求你切换到 Java 或 C++ 再从头学一遍数据结构,而是直接用你每天写的 JavaScript 把栈、队列、链表、散列表、树、图一个个实现出来,学完就能用在自己的项目里。作者洛伊安妮·格罗纳有多年企业级开发与团队管理经验,行文不绕弯子,代码注释充分、篇幅克制,每个结构都从「为什么需要它」讲起,再给出类设计与关键方法实现,中间穿插击鼓传花、汉诺塔式问题、迷宫求解、数独解题器等小例子,让抽象概念落到可运行的程序上。第三版是目前的通行版本,相对第二版新增了 ECMAScript 与 TypeScript 概述、递归、二叉堆与堆排序、算法设计与技巧四章,并补上双端队列、红黑树、计数排序与基数排序,内容覆盖面明显更完整。第 15 章专门讲大 O 表示法和复杂度比较,帮助读者建立「先看复杂度再写代码」的判断力。书中的示例代码有公开仓库,建议边读边敲、边改边跑,配合 LeetCode 简单题进行巩固,效果会远好于只看不练。对想从前端工程师向更扎实的工程能力迈进的人来说,这是一本性价比很高、上手门槛很低的入门读物。

适合谁读

适合

  • 已掌握 JavaScript 基本语法、希望系统补齐数据结构与算法基础的前端开发者
  • 计算机相关专业低年级学生,想用熟悉的脚本语言理解课堂上的数据结构概念
  • 准备技术面试、需要复习常见排序、搜索与图算法的求职者
  • 从其他语言转向前端或 Node.js,想对照 JS 实现复习经典结构的工程师

不适合

  • 完全没有编程基础、尚未写过任何 JavaScript 代码的零基础读者
  • 希望深入算法证明、复杂度数学分析与竞赛级算法的读者,本书深度有限
  • 寻求大型工程架构、框架源码解析或性能调优实战内容的读者

阅读建议

  1. 第 1—3 章可快速浏览,按自身 JavaScript 与 TypeScript 熟练度决定精读或跳读。
  2. 从第 4 章起边读边敲代码,把每章实现的结构整理成自己的小型算法库。
  3. 学完排序与图算法后,配合 LeetCode 对应标签题目做 20—30 道巩固。
  4. 第 14、15 章建议读完前 13 章后再看,用于串联知识并建立复杂度意识。

出版社简介

人民邮电出版社 中国 · 成立于 1953 年

人民邮电出版社以科技、计算机与信息通信类图书见长,并由此延伸至摄影、艺术、软件学习与励志成长等门类,形成较为多元的出版方向。库内图书既涵盖《重构与模式(修订版)》《华为交换机学习指南(第二版)》等计算机与通信技术读物,也收录《小王子(中英法彩绘典藏纪念版)》《了不起的盖茨比》《假如给我三天光明》等双语典藏类作品;《北京十年:1980-1990》与《鬼刀 WLOP个人插画作品集》则体现其在摄影与艺术领域的布局。作者资源包括安东尼·圣埃克苏佩里、海伦·凯勒、Joshua Kerievsky、王达、张兆增与WLOP等。

目录

  1. 第1章 JavaScript简介
  2. 第2章 ECMAScript和TypeScript概述
  3. 第3章 数组
  4. 第4章 栈
  5. 第5章 队列和双端队列
  6. 第6章 链表
  7. 第7章 集合
  8. 第8章 字典和散列表
  9. 第9章 递归
  10. 第10章 树
  11. 第11章 二叉堆和堆排序
  12. 第12章 图
  13. 第13章 排序和搜索算法
  14. 第14章 算法设计与技巧
  15. 第15章 算法复杂度

常见问题

这本书适合零基础学 JavaScript 的人吗?
不太适合。书中第 1 章只是简要回顾语法、环境与调试工具,重点在于用 JavaScript 实现数据结构与算法。若完全没写过 JavaScript,建议先完成一门基础语法课程,能独立写函数、对象与数组操作后再读,收效会好很多。
第 3 版和第 2 版有什么区别?
第 3 版新增了「ECMAScript 和 TypeScript 概述」「递归」「二叉堆和堆排序」「算法设计与技巧」四章,并补充了双端队列、红黑树、堆排序、计数排序和基数排序等内容,还介绍了 Fisher-Yates 随机算法与回溯算法示例。若已读过第 2 版,可重点看新增章节。
书中的代码是什么版本的 JavaScript?
主要基于 ECMAScript 2015 及之后的新特性编写,并介绍了 ES2017 的相关内容,同时用一章介绍 TypeScript 的基本功能与在 TypeScript 中使用数组的方法。示例可在浏览器控制台或 Node.js 环境中运行,建议使用较新的运行环境。
读完能达到什么水平,能应付面试吗?
能建立起对常见数据结构与算法实现思路的完整认识,并具备复杂度分析的基本判断力,对前端面试中的算法题有帮助。但本书偏入门与实践,深度有限,若要应对高强度算法面试,还需额外刷题和补充更进阶的资料。
书里的示例代码在哪里可以获得?
原书配套源码有公开的代码仓库,中文版通常会在图灵社区(ituring.com.cn)的书籍页面提供下载或仓库链接。建议以书中页码对应章节自行实现为主,源码用于对照排查问题。

读者评论

查询本书

本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。

同一作者

同类高分