标签
内容简介
本书是巴西开发者洛伊安妮·格罗纳(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—3 章可快速浏览,按自身 JavaScript 与 TypeScript 熟练度决定精读或跳读。
- 从第 4 章起边读边敲代码,把每章实现的结构整理成自己的小型算法库。
- 学完排序与图算法后,配合 LeetCode 对应标签题目做 20—30 道巩固。
- 第 14、15 章建议读完前 13 章后再看,用于串联知识并建立复杂度意识。
出版社简介
人民邮电出版社
中国 · 成立于 1953 年
人民邮电出版社以科技、计算机与信息通信类图书见长,并由此延伸至摄影、艺术、软件学习与励志成长等门类,形成较为多元的出版方向。库内图书既涵盖《重构与模式(修订版)》《华为交换机学习指南(第二版)》等计算机与通信技术读物,也收录《小王子(中英法彩绘典藏纪念版)》《了不起的盖茨比》《假如给我三天光明》等双语典藏类作品;《北京十年:1980-1990》与《鬼刀 WLOP个人插画作品集》则体现其在摄影与艺术领域的布局。作者资源包括安东尼·圣埃克苏佩里、海伦·凯勒、Joshua Kerievsky、王达、张兆增与WLOP等。
目录
- 第1章 JavaScript简介
- 第2章 ECMAScript和TypeScript概述
- 第3章 数组
- 第4章 栈
- 第5章 队列和双端队列
- 第6章 链表
- 第7章 集合
- 第8章 字典和散列表
- 第9章 递归
- 第10章 树
- 第11章 二叉堆和堆排序
- 第12章 图
- 第13章 排序和搜索算法
- 第14章 算法设计与技巧
- 第15章 算法复杂度
常见问题
这本书适合零基础学 JavaScript 的人吗?
不太适合。书中第 1 章只是简要回顾语法、环境与调试工具,重点在于用 JavaScript 实现数据结构与算法。若完全没写过 JavaScript,建议先完成一门基础语法课程,能独立写函数、对象与数组操作后再读,收效会好很多。
第 3 版和第 2 版有什么区别?
第 3 版新增了「ECMAScript 和 TypeScript 概述」「递归」「二叉堆和堆排序」「算法设计与技巧」四章,并补充了双端队列、红黑树、堆排序、计数排序和基数排序等内容,还介绍了 Fisher-Yates 随机算法与回溯算法示例。若已读过第 2 版,可重点看新增章节。
书中的代码是什么版本的 JavaScript?
主要基于 ECMAScript 2015 及之后的新特性编写,并介绍了 ES2017 的相关内容,同时用一章介绍 TypeScript 的基本功能与在 TypeScript 中使用数组的方法。示例可在浏览器控制台或 Node.js 环境中运行,建议使用较新的运行环境。
读完能达到什么水平,能应付面试吗?
能建立起对常见数据结构与算法实现思路的完整认识,并具备复杂度分析的基本判断力,对前端面试中的算法题有帮助。但本书偏入门与实践,深度有限,若要应对高强度算法面试,还需额外刷题和补充更进阶的资料。
书里的示例代码在哪里可以获得?
原书配套源码有公开的代码仓库,中文版通常会在图灵社区(ituring.com.cn)的书籍页面提供下载或仓库链接。建议以书中页码对应章节自行实现为主,源码用于对照排查问题。
读者评论
查询本书
本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。