读书笔记-05-数据结构与算法JavaScript描述
数据结构与算法JavaScript描述
简介
在前端工程师中,常常有一种声音:“我为什么要学习数据结构与算法?没有数据结构与 算法,我一样很好地完成了工作?
实际上,算法是一个十分宽泛的概念,我们写的任何程序都可称为算法,甚至往冰箱里面 放一头大象,也要经过开门、放入、关门这样的规划,这也可以视为一种简单的算法。可 以说,简单的算法是人类的本能。而算法知识的学习则是吸取前人的经验,对复杂的问题 进行归类、抽象,帮助我们脱离刀耕火种时代,系统掌握算法的一个过程。
随着自身成长和职业发展,不论是做前端、服务端还是客户端,任何一个程序员都会开始 面对更加复杂的问题,算法和数据结构知识就变得不可或缺了。
我一直认为前端工程师则是最需要重视算法和数据结构基础的人。因为历史原因,不少前 端工程师是从视觉设计、网站编辑转过来的,在学校没有学过相应的基础课程,而数据结 构与算法的经典名著大部分又没照顾到入门的需要,所以前端工程师如果自身不重视算法 和数据结构这样的基础知识,很可能陷入数年从事单一重复劳动毫无成长这样的职业发展 困境。在移动浪潮到来之后,用户体验要求越来越高,对前端提出了更高的要求,前端这 个职能,必须提高自身才能继续发展,未来的网页 UI,绝对不是靠几个选择器操作加超链 接就能应付的。越来越复杂的产品和基础库,需要坚实的数据结构与算法基础才能驾驭。
本书对前端工程师是非常好的数据结构与算法入门书,它的难度非常适合前端工程师补习 基础知识。全书仅 200 页,对于有渴求数据结构与算法的前端工程师来说这是非常不错的 开始。特别值得一提的是每章后面的小练习,题目不多但是非常有可操作性。
第一章 JavaScript的编程环境和模型
基础语法
第二章 数组
数组的标准定义是:一个存储元素的线性集合(collection),元素可以通过索引来任意存 取,索引通常是数字,用来计算元素之间存储位置的偏移量。几乎所有的编程语言都有类 似的数据结构。然而 JavaScript 的数组却略有不同。
JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可 能是整数。然而,这些数字索引在内部被转换为字符串类型,这是因为 JavaScript 对象中 的属性名必须是字符串。数组在 JavaScript 中只是一种特殊的对象,所以效率上不如其他 语言中的数组高。
JavaScript 中的数组,严格来说应该称作对象,是特殊的 JavaScript 对象,在内部被归类为数 组。由于 Array 在 JavaScript 中被当作对象,因此它有许多属性和方法可以在编程时使用。
第三章 列表
第四章 栈
第五章 队列
第六章 列表
第七章 字典 Dictionary
第八章 散列
第九章 集合
第十章 二叉树
遍历二叉树
中序遍历
中序遍历按照节点上的键值,以升序访问BST 上的所有节点
先序遍历
先序遍历先访问根节点,然后以同样方式访问左子树和右子树
后序遍历
后序遍历先访问叶子节点,从左子树到右子树,再到根节点