跳至主要內容

读书笔记-05-数据结构与算法JavaScript描述

yyshino大约 4 分钟

数据结构与算法JavaScript描述

简介

在前端工程师中,常常有一种声音:“我为什么要学习数据结构与算法?没有数据结构与 算法,我一样很好地完成了工作?

实际上,算法是一个十分宽泛的概念,我们写的任何程序都可称为算法,甚至往冰箱里面 放一头大象,也要经过开门、放入、关门这样的规划,这也可以视为一种简单的算法。可 以说,简单的算法是人类的本能。而算法知识的学习则是吸取前人的经验,对复杂的问题 进行归类、抽象,帮助我们脱离刀耕火种时代,系统掌握算法的一个过程。

随着自身成长和职业发展,不论是做前端、服务端还是客户端,任何一个程序员都会开始 面对更加复杂的问题,算法和数据结构知识就变得不可或缺了。

我一直认为前端工程师则是最需要重视算法和数据结构基础的人。因为历史原因,不少前 端工程师是从视觉设计、网站编辑转过来的,在学校没有学过相应的基础课程,而数据结 构与算法的经典名著大部分又没照顾到入门的需要,所以前端工程师如果自身不重视算法 和数据结构这样的基础知识,很可能陷入数年从事单一重复劳动毫无成长这样的职业发展 困境。在移动浪潮到来之后,用户体验要求越来越高,对前端提出了更高的要求,前端这 个职能,必须提高自身才能继续发展,未来的网页 UI,绝对不是靠几个选择器操作加超链 接就能应付的。越来越复杂的产品和基础库,需要坚实的数据结构与算法基础才能驾驭。

本书对前端工程师是非常好的数据结构与算法入门书,它的难度非常适合前端工程师补习 基础知识。全书仅 200 页,对于有渴求数据结构与算法的前端工程师来说这是非常不错的 开始。特别值得一提的是每章后面的小练习,题目不多但是非常有可操作性。

第一章 JavaScript的编程环境和模型

基础语法

第二章 数组

数组的标准定义是:一个存储元素的线性集合(collection),元素可以通过索引来任意存 取,索引通常是数字,用来计算元素之间存储位置的偏移量。几乎所有的编程语言都有类 似的数据结构。然而 JavaScript 的数组却略有不同。

JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可 能是整数。然而,这些数字索引在内部被转换为字符串类型,这是因为 JavaScript 对象中 的属性名必须是字符串。数组在 JavaScript 中只是一种特殊的对象,所以效率上不如其他 语言中的数组高。

JavaScript 中的数组,严格来说应该称作对象,是特殊的 JavaScript 对象,在内部被归类为数 组。由于 Array 在 JavaScript 中被当作对象,因此它有许多属性和方法可以在编程时使用。

02-JavaScript数组-01
02-JavaScript数组-01
02-JavaScript数组-02
02-JavaScript数组-02

第三章 列表

02-JavaScript列表-01
02-JavaScript列表-01

第四章 栈

image-20230418102303188
image-20230418102303188
04-JavaScript栈
04-JavaScript栈

第五章 队列

image-20230418103041921
image-20230418103041921

第六章 列表

第七章 字典 Dictionary

第八章 散列

第九章 集合

第十章 二叉树

image-20230418145622900
image-20230418145622900

遍历二叉树

中序遍历

中序遍历按照节点上的键值,以升序访问BST 上的所有节点

image-20230418162735265
image-20230418162735265

先序遍历

先序遍历先访问根节点,然后以同样方式访问左子树和右子树

image-20230418162822218
image-20230418162822218

后序遍历

后序遍历先访问叶子节点,从左子树到右子树,再到根节点

image-20230418162852773
image-20230418162852773